Voltar à lista
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 2

Nota

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âmetroTipoDescrição
signumintNúmero do sinal a configurar (não pode ser SIGKILL nem SIGSTOP).
actconst struct sigaction *Nova ação a instalar, ou NULL para apenas consultar a atual.
oldactstruct sigaction *Se não for NULL, recebe a ação anterior.
sigsetsizesize_tTamanho em bytes de sigset_t, para compatibilidade entre ABIs; glibc sempre passa sizeof(sigset_t).

Registradores (x86_64)

RegistradorPapelArgumento
raxnúmero da syscall (chamada) / valor de retorno (após SYSCALL)
rdiargumento 1signumint
rsiargumento 2actconst struct sigaction *
rdxargumento 3oldactstruct sigaction *
r10argumento 4sigsetsizesize_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.

Relacionadas