Linux x86_64Sinais#234
tgkill
Envia um sinal a uma thread específica dentro de um grupo de threads específico.
Descrição
Versão segura de `tkill`: exigir tanto o `tgid` (PID do processo) quanto o `tid` da thread elimina a condição de corrida em que a thread alvo termina e seu TID é reaproveitado por outra thread antes do sinal chegar. É o que `pthread_kill(3)` usa internamente.
man 2Desde o kernel 2.5.75
Assinatura
int tgkill(int tgid, int tid, int sig);Parâmetros
| Parâmetro | Tipo | Descrição |
|---|---|---|
| tgid | int | PID do processo (thread group) ao qual a thread pertence. |
| tid | int | Identificador da thread alvo dentro do grupo. |
| sig | int | Número do sinal a enviar. |
Registradores (x86_64)
| Registrador | Papel | Argumento |
|---|---|---|
| rax | número da syscall (chamada) / valor de retorno (após SYSCALL) | — |
| rdi | argumento 1 | tgidint |
| rsi | argumento 2 | tidint |
| rdx | argumento 3 | sigint |
Valor de retorno
0 em sucesso; -1 em erro, com errno definido.
Códigos de erro (errno)
- EAGAIN(11)
- Recurso temporariamente indisponível (tente novamente); também conhecido como EWOULDBLOCK.
- EINVAL(22)
- Argumento inválido.
- EPERM(1)
- Operação não permitida (falta de privilégio).
- ESRCH(3)
- Processo inexistente.