Voltar à lista
Linux x86_64Sinais#128

rt_sigtimedwait

Aguarda de forma síncrona até que um dos sinais em um conjunto se torne pendente, com timeout opcional.

Descrição

Alternativa a tratar sinais de forma assíncrona via handler: bloqueia os sinais de interesse com `rt_sigprocmask` e então usa esta chamada para 'recebê-los' de forma síncrona e sequencial, o que simplifica muito a lógica de programas orientados a eventos.

man 2

Assinatura

int rt_sigtimedwait(
    const sigset_t * set,
    siginfo_t * info,
    const struct timespec * timeout,
    size_t sigsetsize
);

Parâmetros

ParâmetroTipoDescrição
setconst sigset_t *Conjunto de sinais a aguardar.
infosiginfo_t *Se não for NULL, recebe detalhes sobre o sinal entregue.
timeoutconst struct timespec *Tempo máximo de espera; NULL para bloquear indefinidamente.
sigsetsizesize_tTamanho em bytes de sigset_t.

Registradores (x86_64)

RegistradorPapelArgumento
raxnúmero da syscall (chamada) / valor de retorno (após SYSCALL)
rdiargumento 1setconst sigset_t *
rsiargumento 2infosiginfo_t *
rdxargumento 3timeoutconst struct timespec *
r10argumento 4sigsetsizesize_t

Valor de retorno

Número do sinal recebido em sucesso; -1 em erro (incluindo timeout, via EAGAIN), com errno definido.

Códigos de erro (errno)

EAGAIN(11)
Recurso temporariamente indisponível (tente novamente); também conhecido como EWOULDBLOCK.
EINTR(4)
Chamada interrompida por um sinal.
EINVAL(22)
Argumento inválido.
EFAULT(14)
Endereço de memória inválido (ponteiro fora do espaço de endereçamento válido).

Relacionadas