Voltar à lista
Linux x86_64IPC & sincronização#293

pipe2

Como pipe, mas aceita flags para criar os descritores já com O_CLOEXEC, O_NONBLOCK ou O_DIRECT.

Descrição

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

Header: unistd.hman 2Desde o kernel 2.6.27

Assinatura

int pipe2(int[2] pipefd, int flags);

Parâmetros

ParâmetroTipoDescrição
pipefdint[2]Recebe os dois descritores do pipe.
flagsintO_CLOEXEC, O_NONBLOCK e/ou O_DIRECT.

Registradores (x86_64)

RegistradorPapelArgumento
raxnúmero da syscall (chamada) / valor de retorno (após SYSCALL)
rdiargumento 1pipefdint[2]
rsiargumento 2flagsint

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.
EMFILE(24)
Limite de arquivos abertos do processo atingido.
ENFILE(23)
Limite de arquivos abertos no sistema atingido.

Relacionadas

Equivalente em Windows Win32