Provided by:
manpages-pt-dev_20040726-1_all 
NOME
dup, dup2 - duplica um descritor de arquivos
SINOPSE
#include <unistd.h>
int dup(int oldfd);
int dup2(int oldfd, int newfd);
DESCRIÇÃO
dup e dup2 criam uma cópia do descritor de arquivos oldfd.
Depois do retorno bem sucedido de dup ou dup2, o velho e o novo
descritores podem ser usados sem distinção. Eles compartilham
travamento, posicionamento do arquivo, ponteiros e sinalizadores; por
exemplo, se a posição do arquivo é modificada usando-se lseek em um dos
descritores, a posição é, também, alterada para o outro.
De qualquer forma, Os dois descritores não dividem o sinalizador close-
on-exec.
dup usa o mais baixo número não usado de descritor para o novo
descritor.
dup2 makes newfd ser a cópia de oldfd, closing newfd primeiro se
necesário.
VALORES RETORNADOS
dup e dup2 retorna o novo descritor, ou -1 se um erro occurrido (neste
caso, errno é selecionado adequadamente).
ERROS
EBADF oldfd não é um descritor de arquivo aberto, ou newfd está fora
do intervalo permitido para descritores de arquivos.
EMFILE O processo tem um número máximo de descritores de arquivos
abertos e tenta abrir um novo.
ADVERTÊNCIA
O erro retornado por dup2 é diferente que aquele retornado por
fcntl(..., F_DUPFD, ...) quando newfd está fora do intervalo. Em
muitos sistemas dup2 também retorna às vezes EINVAL como F_DUPFD.
DE ACORDO COM
SVr4, SVID, POSIX, X/OPEN, BSD 4.3. SVr4 documenta condições de erros
adicionais EINTR e ENOLINK. POSIX.1 adiciona EINTR.
VEJA TAMBÉM
fcntl(2), open(2), close(2)