Provided by: manpages-fr-dev_3.32d0.2p4-1_all bug

NOM

       dup, dup2, dup3 - Dupliquer un descripteur de fichier

SYNOPSIS

       #include <unistd.h>

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

       #define _GNU_SOURCE             /* Consultez feature_test_macros(7) */
       #include <unistd.h>

       int dup3(int oldfd, int newfd, int flags);

DESCRIPTION

       Ces appels systeme creent une copie du descripteur de fichier oldfd.

       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, mais prenez note des points suivants.

       *  Si  oldfd n'est pas un descripteur de fichier valable, alors l'appel
          echoue et newfd n'est pas ferme.

       *  Si oldfd est un descripteur de fichier valable et newfd  a  la  meme
          valeur que oldfd, alors dup2() ne fait rien et renvoie newfd.

       Apres  un  appel  reussi  a  l'un de ces appels systeme, l'ancien et le
       nouveau descripteurs peuvent etre utilises de maniere  interchangeable.
       Ils  referencent  la  meme  description  de  fichier  ouvert (consultez
       open(2)) et ainsi partagent les pointeurs de position et les  drapeaux.
       Par  exemple,  si  le  pointeur  de  position  est modifie en utilisant
       lseek(2) sur l'un des descripteurs, la position est  egalement  changee
       pour l'autre.

       Les  deux  descripteurs ne partagent toutefois pas l'attribut close-on-
       exec. L'attribut close-on-exec (FD_CLOEXEC ; consultez fcntl(2)) de  la
       copie  est desactive, ce qui signifie qu'il ne sera pas ferme lors d'un
       exec().

       dup3() est identique a dup2(), a l'exception de :

       *  L'appelant peut forcer l'attribut close-on-exec  a  etre  positionne
          pour  le  nouveau  descripteur de fichier en ajoutant O_CLOEXEC dans
          flags. Consultez la description de cet attribut  dans  open(2)  pour
          savoir pourquoi cela peut etre utile.

       *  Si oldfd est egal a newfd, alors dup3() echoue avec l'erreur EINVAL.

VALEUR RENVOY'EE

       Ces  appels  systeme renvoient le nouveau descripteur en cas de succes,
       ou -1 en cas d'echec, auquel cas errno contient le code d'erreur.

ERREURS

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

       EBUSY  (Linux  seulement) Cette valeur peut etre renvoyee par dup2() ou
              dup3() lors d'une concurrence critique avec open(2) et dup().

       EINTR  L'appel dup2() ou  dup3()  a  ete  interrompu  par  un  signal ;
              consultez signal(7).

       EINVAL (dup3())  flags  contient  une valeur incorrecte. Ou oldfd etait
              egal a newfd.

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

VERSIONS

       dup3() a ete ajoute dans Linux dans la version  2.6.27 ;  sa  prise  en
       charge dans la glibc est disponible a partir de la version 2.9.

CONFORMIT'E

       dup(), dup2() : SVr4, BSD 4.3, POSIX.1-2001.

       dup3() est specifique a Linux.

NOTES

       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.

       Si  newfd  etait  ouvert,  toutes  les  erreurs   susceptibles   d'etre
       rapportees   par   close(2)   sont  perdues.  Un  programmeur  soigneux
       n'utilisera pas dup2() ou dup3() sans fermer newfd d'abord.

VOIR AUSSI

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

COLOPHON

       Cette page fait partie de  la  publication  3.32  du  projet  man-pages
       Linux.  Une description du projet et des instructions pour signaler des
       anomalies      peuvent      etre       trouvees       a       l'adresse
       <URL:http://www.kernel.org/doc/man-pages/>.

TRADUCTION

       Depuis  2010,  cette  traduction est maintenue a l'aide de l'outil po4a
       <URL:http://po4a.alioth.debian.org/>   par   l'equipe   de   traduction
       francophone        au        sein        du       projet       perkamon
       <URL:http://perkamon.alioth.debian.org/>.

       Christophe Blaess  <URL:http://www.blaess.fr/christophe/>  (1996-2003),
       Alain   Portal  <URL:http://manpagesfr.free.fr/>  (2003-2006).   Julien
       Cristau et l'equipe francophone de traduction de Debian (2006-2009).

       Veuillez  signaler  toute  erreur   de   traduction   en   ecrivant   a
       <debian-l10n-french@lists.debian.org> ou par un rapport de bogue sur le
       paquet manpages-fr.

       Vous pouvez toujours avoir acces a la version anglaise de  ce  document
       en utilisant la commande << man -L C <section> <page_de_man> >>.