Linux x86_64Processos & threads#61
wait4
Aguarda a mudança de estado de um processo filho (terminação, parada por sinal, ou continuação) e opcionalmente coleta seu uso de recursos.
Descrição
Base das funções de biblioteca `wait(3)`/`waitpid(3)`. É essencial para evitar processos zumbis: até que o pai chame `wait4` (ou equivalente) sobre um filho terminado, a entrada dele permanece na tabela de processos.
Header:
sys/wait.hman 2Assinatura
pid_t wait4(pid_t pid, int * wstatus, int options, struct rusage * rusage);Parâmetros
| Parâmetro | Tipo | Descrição |
|---|---|---|
| pid | pid_t | PID específico, grupo de processos, ou -1 para qualquer filho. |
| wstatus | int * | Se não for NULL, recebe o status de saída/sinal do filho. |
| options | int | WNOHANG, WUNTRACED, WCONTINUED, entre outras. |
| rusage | struct rusage * | Se não for NULL, recebe estatísticas de uso de recursos do filho. |
Registradores (x86_64)
| Registrador | Papel | Argumento |
|---|---|---|
| rax | número da syscall (chamada) / valor de retorno (após SYSCALL) | — |
| rdi | argumento 1 | pidpid_t |
| rsi | argumento 2 | wstatusint * |
| rdx | argumento 3 | optionsint |
| r10 | argumento 4 | rusagestruct rusage * |
Valor de retorno
PID do filho cujo estado mudou em sucesso; 0 se WNOHANG e nenhum filho mudou de estado; -1 em erro, com errno definido.
Códigos de erro (errno)
- ECHILD(10)
- Nenhum processo filho.
- EINTR(4)
- Chamada interrompida por um sinal.
- EINVAL(22)
- Argumento inválido.