DUP(2)

NOM
dup, dup2 - Dupliquer un descripteur de fichier.

SYNOPSIS
#include <unistd.h>

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

DESCRIPTION
dup et dup2 creent une copie du descripteur de fichier oldfd. L'ancien et le nouveau descripteurs peuvent etre utilises de maniere interchangeable. Ils partagent les verrous, les pointeurs de position et les drapeaux. Par exemple si le pointeur de position est modifie en utilisant lseek sur l'un des descripteurs, la position est egalement changee pour l'autre. Les deux descripteurs ne partagent toutefois pas le drapeau Close-on-exec. dup utilise le plus petit numero inutilise pour le nouveau descripteur. dup2 transforme newfd en une copie de oldfd, fermant auparavant newfd si besoin est.

VALEUR RENVOYEE
dup et dup2 renvoient le nouveau descripteur, ou -1 s'ils echouent, auquel cas errno contient le code d'erreur.

ERREURS

EBADF
    oldfd n'est pas un descripteur valide, ou newfd n'est pas dans les valeurs autorisees pour un descripteur.

EMFILE
    Le processus dispose deja du nombre maximum de descripteurs de fichiers autorises simultanement, et tente d'en ouvrir un nouveau.

ATTENTION
Les erreurs renvoyees par dup2 sont differentes de celles retournees par fcntl(...,F_DUPFD,...) si newfd n'est pas dans les valeurs autorisees. Sur certains systemes dup2 retourne aussi parfois EINVAL comme F_DUPFD.

CONFORMITE
SVr4, SVID POSIX, X/OPEN, BSD 4.3. SVr4 documente des conditions d'erreur supplementaires EINTR et ENOLINK. POSIX.1 ajoute egalement EINTR.

VOIR AUSSI
fcntl (2), open (2), close (2).