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

NOM

       fork - Creer un processus fils

SYNOPSIS

       #include <unistd.h>

       pid_t fork(void);

DESCRIPTION

       fork()  cree  un nouveau processus en copiant le processus appelant. Le
       nouveau processus, qu'on appelle  fils  (<< child >>),  est  une  copie
       exacte  du  processus  appelant, qu'on appelle p`ere ou parent, avec les
       exceptions suivantes :

       *  Le fils a son propre identifiant de processus unique, et ce  PID  ne
          correspond  a  l'identifiant  d'aucun  groupe  de processus existant
          (setpgid(2)).

       *  L'identifiant de processus parent (PPID) du fils  est  l'identifiant
          de processus (PID) du pere.

       *  Le  fils  n'herite  pas des verrouillages memoire du pere (mlock(2),
          mlockall(2)).

       *  Les utilisations de ressources (getrusage(2)) et  les  compteurs  de
          temps CPU (times(2)) sont remis a zero dans le fils.

       *  L'ensemble  de signaux en attente dans le fils est initialement vide
          (sigpending(2)).

       *  Le fils n'herite pas des operations sur les semaphores de  son  pere
          (semop(2)).

       *  Le  fils  n'herite  pas  des  verrous  d'enregistrements de son pere
          (fcntl(2)).

       *  Le fils n'herite pas des temporisations de son  pere  (setitimer(2),
          alarm(2), timer_create(2)).

       *  Le  fils  n'herite  pas des operations d'E/S asynchrones en cours de
          son pere (aio_read(3), aio_write(3)) et  n'herite  d'aucun  contexte
          d'E/S asynchrone de son pere (consultez io_setup(2)).

       Les  attributs  du  processus listes ci-dessus sont tous specifies dans
       POSIX.1-2001. Les processus parent et fils different egalement par  les
       proprietes specifiques Linux suivantes :

       *  Le fils n'herite pas des notifications de modification de repertoire
          (dnotify)  de  son  pere  (voir  la  description  de  F_NOTIFY  dans
          fcntl(2)).

       *  Le drapeau PR_SET_PDEATHSIG de prctl(2) est reinitialise, de maniere
          a ce que le fils ne recoive  pas  de  signal  lorsque  son  pere  se
          termine.

       *  Les  projections  en  memoire  qui  ont ete marquees avec l'attribut
          MADV_DONTFORK de madvise(2) ne sont pas herites lors d'un fork().

       *  Le signal de terminaison du fils  est  toujours  SIGCHLD  (consultez
          clone(2)).

       Notez egalement les points suivants :

       *  Le  processus  fils  est  cree  avec un unique thread -- celui qui a
          appele fork(). L'espace d'adressage virtuel complet  du  parent  est
          copie  dans  le  fils,  y  compris  l'etat  des  mutex, variables de
          condition,  et  autres  objets  de   pthreads ;   l'utilisation   de
          pthread_atfork(3)  peut  etre  utile  pour traiter les problemes que
          cela peut occasionner.

       *  Le fils herite de copies des  descripteurs  de  fichier  ouverts  du
          pere.  Chaque  descripteur  de  fichier  du  fils  renvoie a la meme
          description de fichier ouvert (consultez open(2)) que le descripteur
          de fichier correspondant dans le processus parent. Cela signifie que
          les deux descripteurs partagent les attributs d'etat du fichier,  le
          decalage,   et  les  attributs  d'E/S  lies  aux  signaux  (voir  la
          description de F_SETOWN et F_SETSIG dans fcntl(2)).

       *  Le fils herite de copies des descripteurs files de messages ouvertes
          dans  le pere (consultez mq_overview(7)). Chaque descripteur dans le
          fils renvoie a la meme description de file de messages  ouverte  que
          le  descripteur  correspondant  dans  le pere. Cela signifie que les
          deux descripteurs partagent leurs attributs (mq_flags).

       *  Le fils herite d'une copie de  l'ensemble  des  flux  de  repertoire
          ouverts  par  le parent (consultez opendir(3)). POSIX.1-2001 indique
          que les flux de repertoire correspondant dans le parent ou  l'enfant
          peuvent  partager  le  positionnement  du  flux de repertoire ; sous
          Linux/glibc, ce n'est pas le cas.

VALEUR RENVOY'EE

       En cas de succes, le PID du fils  est  renvoye  au  parent,  et  0  est
       renvoye  au  fils.  En  cas  d'echec  -1  est  renvoye au parent, aucun
       processus fils n'est cree, et errno contient le code d'erreur.

ERREURS

       EAGAIN fork() ne peut pas allouer assez de memoire pour copier la table
              des  pages  du  pere  et  allouer une structure de tache pour le
              fils.

       EAGAIN Il n'a pas ete possible de creer un  nouveau  processus  car  la
              limite  ressource  RLIMIT_NPROC  de l'appelant a ete rencontree.
              Pour franchir cette limite, le processus  doit  avoir  au  moins
              l'une des deux capacites CAP_SYS_ADMIN ou CAP_SYS_RESOURCE.

       ENOMEM fork() a echoue car le noyau n'a plus assez de memoire.

CONFORMIT'E

       SVr4, BSD 4.3, POSIX.1-2001.

NOTES

       Sous  Linux,  fork() est implemente en utilisant une methode de copie a
       l'ecriture. Ceci consiste a ne faire  la  veritable  duplication  d'une
       page  memoire  que  lorsqu'un  processus  en modifie une instance. Tant
       qu'aucun des deux processus n'ecrit  dans  une  page  donnee,  celle-ci
       n'est  pas  vraiment dupliquee. Ainsi les seules penalisations induites
       par fork sont le temps et la memoire necessaires a la copie de la table
       des pages du parent ainsi que la creation d'une structure de tache pour
       le fils.

       Depuis la version 2.3.3, plutot que d'invoquer l'appel  systeme  fork()
       du  noyau, l'enveloppe fork() de la glibc qui est fournie comme faisant
       partie de l'implementation de threading NPTL invoque clone(2) avec  des
       attributs   qui   fournissent   le   meme  effet  que  l'appel  systeme
       traditionnel. L'enveloppe de la glibc invoque tous les gestionnaires de
       bifurcation (Ndt : fork) etablis avec pthread_atfork(3).

EXEMPLE

       Consultez pipe(2) et wait(2).

VOIR AUSSI

       clone(2),   execve(2),  setrlimit(2),  unshare(2),  vfork(2),  wait(2),
       daemon(3), capabilities(7), credentials(7)

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> >>.