bionic (2) dup.2.gz

Provided by: manpages-es_1.55-10_all bug

NOMBRE

       dup, dup2 - duplica un descriptor de fichero

SINOPSIS

       #include <unistd.h>

       int dup(int oldfd);
       int dup2(int oldfd, int newfd);

DESCRIPCIÓN

       dup y dup2 crean una copia del descriptor de fichero oldfd.

       Después  de  una  llamada  a  dup  o  dup2  con  éxito,  los  descriptores  antiguo y nuevo pueden usarse
       indiferentemente. Comparten candados (locks), indicadores de posición de fichero y banderas (flags);  por
       ejemplo,  si  la posición del fichero se modifica usando lseek en uno de los descriptores, la posición en
       el otro también cambia.

       Sin embargo los descriptores no comparten la bandera close-on-exec, (cerrar-al-ejecutar).

       dup usa el descriptor libre con menor numeración posible como nuevo descriptor.

       dup2 hace que newfd sea la copia de oldfd, cerrando primero newfd si es necesario.

VALOR DEVUELTO

       dup y dup2 devuelven el valor del nuevo descriptor, ó -1 si ocurre algún error, en cuyo caso  errno  toma
       un valor apropiado.

ERRORES

       EBADF  oldfd  no  es  un  descriptor  de  fichero  abierto,  o  newfd está fuera del rango permitido para
              descriptores de ficheros.

       EMFILE El proceso ya tiene el máximo número de descriptores de fichero abiertos y se ha  intentado  abrir
              uno nuevo.

ADVERTENCIA

       El error devuelto por dup2 es diferente del devuelto por fcntl(..., F_DUPFD,...)  cuando newfd está fuera
       de rango. En algunos sistemas dup2 a veces devuelve EINVAL como F_DUPFD.

FALLOS

       Si newfd estaba abierto, cualquier error que pudiera haber aparecido en el momento de llamar a close() se
       pierde. Un programador cauteloso no usará dup2 sin cerrar newfd primero.

CONFORME A

       SVID,  AT&T, POSIX, X/OPEN, BSD 4.3. SVr4 documenta las condiciones de error adicionales EINTR y ENOLINK.
       POSIX.1 añade EINTR.

VÉASE TAMBIÉN

       fcntl(2), open(2), close(2)