Provided by: manpages-pt-dev_20040726-2_all bug

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)