Voltar à lista
Linux x86_64E/S assíncrona & eventos#289

signalfd4

Como signalfd, mas aceita flags para criar o descritor já com SFD_CLOEXEC/SFD_NONBLOCK.

Descrição

Evita a condição de corrida de aplicar essas flags separadamente com `fcntl` após `signalfd`.

Header: sys/signalfd.hman 2Desde o kernel 2.6.27

Assinatura

int signalfd4(int fd, const sigset_t * mask, size_t sizemask, int flags);

Parâmetros

ParâmetroTipoDescrição
fdint-1 para criar, ou um signalfd existente para reconfigurar.
maskconst sigset_t *Conjunto de sinais a capturar.
sizemasksize_tTamanho de `mask` em bytes.
flagsintSFD_CLOEXEC, SFD_NONBLOCK.

Registradores (x86_64)

RegistradorPapelArgumento
raxnúmero da syscall (chamada) / valor de retorno (após SYSCALL)
rdiargumento 1fdint
rsiargumento 2maskconst sigset_t *
rdxargumento 3sizemasksize_t
r10argumento 4flagsint

Valor de retorno

Um descritor signalfd em sucesso; -1 em erro, com errno definido.

Códigos de erro (errno)

EBADF(9)
Descritor de arquivo inválido.
EINVAL(22)
Argumento inválido.
EMFILE(24)
Limite de arquivos abertos do processo atingido.
ENOMEM(12)
Memória insuficiente para completar a operação.

Relacionadas