Linux x86_64Processos & threads#434
pidfd_open
Cria um pidfd (descritor de arquivo) referenciando um processo existente, identificado por PID.
Descrição
O pidfd pode ser monitorado com `poll`/`epoll` para saber quando o processo termina (sem a corrida de checar `kill(pid, 0)` periodicamente), e usado com `pidfd_send_signal` e `pidfd_getfd`.
man 2Desde o kernel 5.3
Assinatura
int pidfd_open(pid_t pid, unsigned int flags);Parâmetros
| Parâmetro | Tipo | Descrição |
|---|---|---|
| pid | pid_t | PID do processo a referenciar. |
| flags | unsigned int | PIDFD_NONBLOCK, entre outras. |
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 | flagsunsigned int |
Valor de retorno
Um novo pidfd em sucesso; -1 em erro, com errno definido.
Códigos de erro (errno)
- EINVAL(22)
- Argumento inválido.
- EMFILE(24)
- Limite de arquivos abertos do processo atingido.
- ENFILE(23)
- Limite de arquivos abertos no sistema atingido.
- ENODEV(19)
- Dispositivo inexistente.
- ESRCH(3)
- Processo inexistente.