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)