Provided by: manpages-fr-dev_3.57d1p1-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 <fcntl.h>      /* Définitions des constantes O_*   */
       #include <unistd.h>

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

DESCRIPTION

       Ces appels système créent une copie du descripteur de fichier oldfd.

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

       *  Si oldfd n'est pas un descripteur de fichier valable, alors  l'appel  échoue  et  newfd
          n'est pas fermé.

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

       Après un appel réussi à l'un de ces appels système, l'ancien et  le  nouveau  descripteurs
       peuvent  être  utilisés de manière interchangeable. Ils référencent la même 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 modifié en utilisant lseek(2) sur
       l'un des descripteurs, la position est également changée 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 désactivé, ce qui signifie
       qu'il ne sera pas fermé lors d'un exec().

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

       *  L'appelant peut forcer l'attribut close-on-exec  à  être  positionné  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 être utile.

       *  Si oldfd est égal à newfd, alors dup3() échoue avec l'erreur EINVAL.

VALEUR RENVOYÉE

       Ces appels système renvoient le nouveau descripteur  en  cas  de  succès,  ou  -1  en  cas
       d'échec, 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 autorisées pour un descripteur.

       EBUSY  (Linux seulement) Cette valeur peut être renvoyée par dup2() ou dup3()  lors  d'une
              concurrence critique avec open(2) et dup().

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

       EINVAL (dup3()) flags contient une valeur incorrecte. Ou oldfd était égal à newfd.

       EMFILE Le  processus  dispose  déjà du nombre maximal de descripteurs de fichier autorisés
              simultanément, et tente d'en ouvrir un nouveau.

VERSIONS

       dup3() a été ajouté dans Linux dans la version 2.6.27 ; sa prise en charge dans  la  glibc
       est disponible à partir de la version 2.9.

CONFORMITÉ

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

       dup3() est spécifique à Linux.

NOTES

       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.

       Si newfd était ouvert, toutes les erreurs susceptibles d'être rapportées 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.57 du projet man-pages Linux. Une description
       du projet et des  instructions  pour  signaler  des  anomalies  peuvent  être  trouvées  à
       l'adresse http://www.kernel.org/doc/man-pages/.

TRADUCTION

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

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

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

       Vous  pouvez  toujours  avoir  accès  à la version anglaise de ce document en utilisant la
       commande « man -L C <section> <page_de_man> ».