Provided by: manpages-fr-dev_4.13-4_all bug

NOM

       getpid, getppid - Obtenir l'identifiant d'un processus

SYNOPSIS

       #include <sys/types.h>
       #include <unistd.h>

       pid_t getpid(void);
       pid_t getppid(void);

DESCRIPTION

       getpid()  renvoie  l'identifiant  du  processus appelant (cela est souvent utilisé par des
       routines qui génèrent des noms de fichier temporaire uniques).

       getppid() renvoie l'ID du processus parent de celui appelant. Il s'agira soit de  l'ID  du
       processus  qui  a  créé ce processus en utilisant fork(), soit, si ce processus s'est déjà
       terminé, de l'ID du  processus  auquel  il  a  été  réaffilié  (init(1)  ou  un  processus
       « subreaper » défini avec l'opération PR_SET_CHILD_SUBREAPER de prctl(2)).

ERREURS

       Ces fonctions réussissent toujours.

CONFORMITÉ

       POSIX.1-2001, POSIX.1-2008, 4.3BSD, SVr4.

NOTES

       Si  le  parent  de  l'appelant  est  dans  un  espace  de  noms  de  PID  différent  (voir
       pid_namespaces(7)), getppid() renvoie 0.

       Du point de vue du noyau, le PID (qui est partagé par tous les threads dans  un  processus
       multithreads)  est parfois connu sous l'ID du groupe du thread (TGID). Cela contraste avec
       l'ID du thread (TID) du noyau qui est unique pour chaque thread.  Pour  plus  de  détails,
       voir gettid(2) ou le point sur l'attribut CLONE_THREAD dans clone(2).

   différences entre bibliothèque C et noyau
       De  la  glibc  version  2.3.4 jusqu'à la version 2.24 incluse, la fonction enveloppe de la
       glibc pour getpid() faisait un cache des  PID,  de  façon  à  éviter  des  appels  système
       supplémentaires  quand  un processus appelle getpid() de façon répétée. Normalement, cette
       mise en cache n'était pas visible, mais son fonctionnement correct reposait sur la gestion
       du  cache  dans  les  fonctions  enveloppes  pour  fork(2),  vfork(2) et clone(2) : si une
       application se passait des enveloppes de la glibc pour  ces  appels  système  en  appelant
       syscall(2),  alors  un  appel  à getpid() dans l'enfant renvoyait la mauvaise valeur (pour
       être précis : il renvoyait le PID du processus parent). En outre, il y avait  des  cas  où
       getpid()  renvoyait  la  mauvaise  valeur  même  avec  un  appel  clone(2) par la fonction
       enveloppe de la glibc (voir BOGUES de clone(2) pour un point sur  ce  cas).  De  plus,  la
       complexité  du  code  de  mise  en  cache  était  devenue, au fil des années, la source de
       quelques bogues dans la glibc.

       Du fait des problèmes susmentionnés, depuis la glibc version 2.25, le  cache  du  PID  est
       retiré :  les  appels  à  getpid()  appellent  toujours  le  vrai appel système au lieu de
       renvoyer une valeur mise en cache.

       Sur Alpha, au lieu d'une paire d'appels système  getpid()  et  getppid(),  un  seul  appel
       getxpid()  est  fourni,  qui renvoie une paire PID et PID parent. Les fonctions enveloppes
       getpid() et getppid() de la glibc gèrent cela de  manière  transparente.  Voir  syscall(2)
       pour des détails sur les tableaux de registre.

VOIR AUSSI

       clone(2),  fork(2),  gettid(2),  kill(2),  exec(3),  mkstemp(3),  tempnam(3),  tmpfile(3),
       tmpnam(3), credentials(7), pid_namespaces(7)

COLOPHON

       Cette page fait partie de la publication 5.10 du projet man-pages Linux.  Une  description
       du  projet et des instructions pour signaler des anomalies et la dernière version de cette
       page peuvent être trouvées à l'adresse https://www.kernel.org/doc/man-pages/.

TRADUCTION

       La traduction française de cette  page  de  manuel  a  été  créée  par  Christophe  Blaess
       <https://www.blaess.fr/christophe/>,  Stéphan  Rafin  <stephan.rafin@laposte.net>, Thierry
       Vignaud <tvignaud@mandriva.com>, François Micaux, Alain  Portal  <aportal@univ-montp2.fr>,
       Jean-Philippe    Guérard   <fevrier@tigreraye.org>,   Jean-Luc   Coulon   (f5ibh)   <jean-
       luc.coulon@wanadoo.fr>,   Julien    Cristau    <jcristau@debian.org>,    Thomas    Huriaux
       <thomas.huriaux@gmail.com>, Nicolas François <nicolas.francois@centraliens.net>, Florentin
       Duneau <fduneau@gmail.com>, Simon Paillard <simon.paillard@resel.enst-bretagne.fr>,  Denis
       Barbier   <barbier@debian.org>,   David   Prévot  <david@tilapin.org>,  Cédric  Boutillier
       <cedric.boutillier@gmail.com>, Frédéric Hantrais  <fhantrais@gmail.com>  et  Jean-Philippe
       MENGUAL <jpmengual@debian.org>

       Cette  traduction  est  une  documentation libre ; veuillez vous reporter à la GNU General
       Public  License  version 3  ⟨https://www.gnu.org/licenses/gpl-3.0.html⟩   concernant   les
       conditions de copie et de distribution. Il n'y a aucune RESPONSABILITÉ LÉGALE.

       Si vous découvrez un bogue dans la traduction de cette page de manuel, veuillez envoyer un
       message à debian-l10n-french@lists.debian.org ⟨⟩.