Provided by:
manpages-es_1.55-10_all 
NOMBRE
dup, dup2 - duplica un descriptor de fichero
SINOPSIS
#include <unistd.h>
int dup(int oldfd);
int dup2(int oldfd, int newfd);
DESCRIPCI'ON
dup y dup2 crean una copia del descriptor de fichero oldfd.
Despues de una llamada a dup o dup2 con exito, los descriptores antiguo
y nuevo pueden usarse indiferentemente. Comparten candados (locks),
indicadores de posicion de fichero y banderas (flags); por ejemplo, si
la posicion del fichero se modifica usando lseek en uno de los
descriptores, la posicion en el otro tambien cambia.
Sin embargo los descriptores no comparten la bandera close-on-exec,
(cerrar-al-ejecutar).
dup usa el descriptor libre con menor numeracion 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, o -1 si ocurre
algun error, en cuyo caso errno toma un valor apropiado.
ERRORES
EBADF oldfd no es un descriptor de fichero abierto, o newfd esta fuera
del rango permitido para descriptores de ficheros.
EMFILE El proceso ya tiene el maximo numero 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 esta 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
usara 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 anade EINTR.
V'EASE TAMBI'EN
fcntl(2), open(2), close(2)