Linux x86_64Processos & threads#247
waitid
Versão mais flexível de wait4, com seleção mais granular de qual mudança de estado aguardar e opção de não consumir o estado do filho.
Descrição
Permite, por exemplo, esperar por um PID específico ou por qualquer processo do mesmo PGID, filtrar por tipo de evento (WEXITED, WSTOPPED, WCONTINUED) e usar WNOWAIT para 'espiar' o estado sem removê-lo (permitindo que outra chamada wait o colha depois).
Header:
sys/wait.hman 2Assinatura
int waitid(idtype_t idtype, id_t id, siginfo_t * infop, int options);Parâmetros
| Parâmetro | Tipo | Descrição |
|---|---|---|
| idtype | idtype_t | P_PID, P_PGID ou P_ALL — como `id` é interpretado. |
| id | id_t | PID, PGID, ou ignorado se idtype for P_ALL. |
| infop | siginfo_t * | Recebe detalhes sobre a mudança de estado. |
| options | int | WEXITED, WSTOPPED, WCONTINUED, WNOHANG, WNOWAIT. |
Registradores (x86_64)
| Registrador | Papel | Argumento |
|---|---|---|
| rax | número da syscall (chamada) / valor de retorno (após SYSCALL) | — |
| rdi | argumento 1 | idtypeidtype_t |
| rsi | argumento 2 | idid_t |
| rdx | argumento 3 | infopsiginfo_t * |
| r10 | argumento 4 | optionsint |
Valor de retorno
0 em sucesso; -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.