Linux x86_64Arquivos & E/S#276
tee
Duplica dados de um pipe para outro sem consumi-los do pipe de origem.
Descrição
Como o utilitário `tee(1)`, mas em nível de pipes do kernel — permite, por exemplo, inspecionar dados em trânsito entre dois processos sem interrompo fluxo original.
man 2Desde o kernel 2.6.17
Assinatura
ssize_t tee(int fd_in, int fd_out, size_t len, unsigned int flags);Parâmetros
| Parâmetro | Tipo | Descrição |
|---|---|---|
| fd_in | int | Pipe de origem. |
| fd_out | int | Pipe de destino. |
| len | size_t | Número máximo de bytes a duplicar. |
| flags | unsigned int | SPLICE_F_NONBLOCK, entre outras. |
Registradores (x86_64)
| Registrador | Papel | Argumento |
|---|---|---|
| rax | número da syscall (chamada) / valor de retorno (após SYSCALL) | — |
| rdi | argumento 1 | fd_inint |
| rsi | argumento 2 | fd_outint |
| rdx | argumento 3 | lensize_t |
| r10 | argumento 4 | flagsunsigned int |
Valor de retorno
Número de bytes duplicados em sucesso; -1 em erro, com errno definido.
Códigos de erro (errno)
- EAGAIN(11)
- Recurso temporariamente indisponível (tente novamente); também conhecido como EWOULDBLOCK.
- EINVAL(22)
- Argumento inválido.
- ENOMEM(12)
- Memória insuficiente para completar a operação.