Linux x86_64IPC & sincronização#22
pipe
Cria um pipe anônimo unidirecional, retornando um par de descritores de leitura e escrita.
Descrição
O mecanismo de IPC mais simples do Unix: dados escritos em `fds[1]` podem ser lidos em `fds[0]`, na ordem em que foram escritos (FIFO), tipicamente usado entre processo pai e filho após `fork`, ou para encadear comandos (`|` no shell).
Header:
unistd.hman 2Assinatura
int pipe(int[2] pipefd);Parâmetros
| Parâmetro | Tipo | Descrição |
|---|---|---|
| pipefd | int[2] | Recebe dois descritores: pipefd[0] para leitura, pipefd[1] para escrita. |
Registradores (x86_64)
| Registrador | Papel | Argumento |
|---|---|---|
| rax | número da syscall (chamada) / valor de retorno (após SYSCALL) | — |
| rdi | argumento 1 | pipefdint[2] |
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).
- EMFILE(24)
- Limite de arquivos abertos do processo atingido.
- ENFILE(23)
- Limite de arquivos abertos no sistema atingido.