DUP
Section: Manuel du programmeur Linux (2) Updated: 18 juillet 2003 Index
NOM
SYNOPSIS
DESCRIPTION
VALEUR RENVOYÉE
ERREURS
ATTENTION
BOGUES
CONFORMITÉ
VOIR AUSSI
TRADUCTION
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
créent une copie du descripteur de fichier
oldfd.
Après un appel réussi à dup ou dup2,
l'ancien et le nouveau descripteurs peuvent être utilisés de manière
interchangeable. Ils partagent les verrous, les pointeurs de position
et les drapeaux. Par exemple si le pointeur de position est modifié en utilisant
lseek
sur l'un des descripteurs, la position est également changée pour l'autre.
Les deux descripteurs ne partagent toutefois pas le drapeau Close-on-exec.
dup
utilise le plus petit numéro inutilisé pour le nouveau descripteur.
dup2
transforme newfd en une copie de oldfd, fermant auparavant newfd
si besoin est.
VALEUR RENVOYÉE
dup et dup2
renvoient le nouveau descripteur, ou -1 s'ils échouent, 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 autorisées pour un descripteur.
- EMFILE
-
Le processus dispose déjà du nombre maximum de descripteurs de fichiers
autorisés simultanément, et tente d'en ouvrir un nouveau.
ATTENTION
Les erreurs renvoyées par
dup2
sont différentes de celles retournées par
fcntl(...,F_DUPFD,...)
si
newfd
n'est pas dans les valeurs autorisées. Sur certains systèmes
dup2
retourne aussi parfois
EINVAL
comme
F_DUPFD.
BOGUES
Si
newfd
était ouvert, toutes les erreurs susceptibles d'être rapportées par
close()
sont perdues. Un programmeur soigneux n'utilisera pas
dup2
sans fermer
newfd
d'abord.
CONFORMITÉ
SVr4, SVID POSIX, X/OPEN, BSD 4.3. SVr4 documente des conditions d'erreur
supplémentaires EINTR et ENOLINK. POSIX.1 ajoute également EINTR.
VOIR AUSSI
TRADUCTION
Christophe Blaess, 1996-2003.
|