Linux x86_64Sinais#13
rt_sigaction
Define ou consulta o tratador (handler) de um sinal específico.
Descrição
Implementa a chamada por trás da função de biblioteca `sigaction(2)`: registra a ação a tomar quando o processo recebe um sinal (ignorar, usar o tratador padrão, ou chamar uma função definida pelo usuário), com controle fino sobre a máscara de sinais bloqueados durante o tratador e flags como SA_RESTART/SA_SIGINFO. O prefixo 'rt_' distingue a versão 'real-time' (com suporte à `sigset_t` estendida) da antiga chamada `sigaction` de 32-bit, que não existe no x86_64.
Header:
signal.hman 2Nota
Não é chamada diretamente — a função de biblioteca `sigaction(2)` do glibc empacota `sigsetsize` automaticamente.
Assinatura
int rt_sigaction(
int signum,
const struct sigaction * act,
struct sigaction * oldact,
size_t sigsetsize
);Parâmetros
| Parâmetro | Tipo | Descrição |
|---|---|---|
| signum | int | Número do sinal a configurar (não pode ser SIGKILL nem SIGSTOP). |
| act | const struct sigaction * | Nova ação a instalar, ou NULL para apenas consultar a atual. |
| oldact | struct sigaction * | Se não for NULL, recebe a ação anterior. |
| sigsetsize | size_t | Tamanho em bytes de sigset_t, para compatibilidade entre ABIs; glibc sempre passa sizeof(sigset_t). |
Registradores (x86_64)
| Registrador | Papel | Argumento |
|---|---|---|
| rax | número da syscall (chamada) / valor de retorno (após SYSCALL) | — |
| rdi | argumento 1 | signumint |
| rsi | argumento 2 | actconst struct sigaction * |
| rdx | argumento 3 | oldactstruct sigaction * |
| r10 | argumento 4 | sigsetsizesize_t |
Valor de retorno
0 em sucesso; -1 em erro, com errno definido.
Códigos de erro (errno)
- EFAULT(14)
- Endereço de memória inválido (ponteiro fora do espaço de endereçamento válido).
- EINVAL(22)
- Argumento inválido.