Provided by: manpages-pt-dev_20040726-4_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)