Linux x86_64Arquivos & E/S#33Depreciada
dup2
Duplica um descritor de arquivo para um número específico, fechando-o antes se já estiver em uso.
Descrição
Usada classicamente para redirecionar stdin/stdout/stderr (ex.: implementação de pipes de shell) para um descritor específico.
Header:
unistd.hman 2Depreciada
Prefira `dup3` quando precisar de O_CLOEXEC atômico no novo descritor.
Assinatura
int dup2(int oldfd, int newfd);Parâmetros
| Parâmetro | Tipo | Descrição |
|---|---|---|
| oldfd | int | Descritor a duplicar. |
| newfd | int | Número de descritor de destino. |
Registradores (x86_64)
| Registrador | Papel | Argumento |
|---|---|---|
| rax | número da syscall (chamada) / valor de retorno (após SYSCALL) | — |
| rdi | argumento 1 | oldfdint |
| rsi | argumento 2 | newfdint |
Valor de retorno
`newfd` em sucesso; -1 em erro, com errno definido.
Códigos de erro (errno)
- EBADF(9)
- Descritor de arquivo inválido.
- EBUSY(16)
- Dispositivo ou recurso ocupado.
- EINTR(4)
- Chamada interrompida por um sinal.
- EMFILE(24)
- Limite de arquivos abertos do processo atingido.