.\" -*- coding: UTF-8 -*- .\" Copyright 1993 Rickard E. Faith (faith@cs.unc.edu) .\" .\" SPDX-License-Identifier: Linux-man-pages-copyleft .\" .\"******************************************************************* .\" .\" This file was generated with po4a. Translate the source file. .\" .\"******************************************************************* .TH getpid 2 "22 janvier 2023" "Pages du manuel de Linux 6.03" .SH NOM getpid, getppid \- Obtenir l'identifiant d'un processus .SH BIBLIOTHÈQUE Bibliothèque C standard (\fIlibc\fP, \fI\-lc\fP) .SH SYNOPSIS .nf \fB#include \fP .PP \fBpid_t getpid(void);\fP \fBpid_t getppid(void);\fP .fi .SH DESCRIPTION \fBgetpid\fP() renvoie l'identifiant du processus appelant (cela est souvent utilisé par des routines qui génèrent des noms de fichier temporaire uniques). .PP \fBgetppid\fP() 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 \fBfork\fP(), soit, si ce processus s'est déjà terminé, de l'ID du processus auquel il a été réaffilié (\fBinit\fP(1) ou un processus «\ subreaper\ » défini avec l'opération \fBPR_SET_CHILD_SUBREAPER\fP de \fBprctl\fP(2)). .SH ERREURS Ces fonctions réussissent toujours. .SH STANDARDS POSIX.1\-2001, POSIX.1\-2008, 4.3BSD, SVr4. .SH NOTES Si le parent de l'appelant est dans un espace de noms de PID différent (voir \fBpid_namespaces\fP(7)), \fBgetppid\fP() renvoie \fB0\fP. .PP .\" 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 \fBgettid\fP(2) ou le point sur l'attribut \fBCLONE_THREAD\fP dans \fBclone\fP(2). .SS "différences entre bibliothèque C et noyau" .\" The following program demonstrates this "feature": .\" .\" #define _GNU_SOURCE .\" #include .\" #include .\" #include .\" #include .\" #include .\" #include .\" .\" int .\" main(int argc, char *argv[]) .\" { .\" /* The following statement fills the getpid() cache */ .\" .\" printf("parent PID = %ld\n", (intmax_t) getpid()); .\" .\" if (syscall(SYS_fork) == 0) { .\" if (getpid() != syscall(SYS_getpid)) .\" printf("child getpid() mismatch: getpid()=%jd; " .\" "syscall(SYS_getpid)=%ld\n", .\" (intmax_t) getpid(), (long) syscall(SYS_getpid)); .\" exit(EXIT_SUCCESS); .\" } .\" wait(NULL); .\"} De la glibc\ 2.3.4 jusqu'à la glibc\ 2.24 incluse, la fonction enveloppe de la glibc pour \fBgetpid\fP() faisait un cache des PID, de façon à éviter des appels système supplémentaires quand un processus appelle \fBgetpid\fP() 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 \fBfork\fP(2), \fBvfork\fP(2) et \fBclone\fP(2)\ : si une application se passait des enveloppes de la glibc pour ces appels système en appelant \fBsyscall\fP(2), alors un appel à \fBgetpid\fP() 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ù \fBgetpid\fP() renvoyait la mauvaise valeur même avec un appel \fBclone\fP(2) par la fonction enveloppe de la glibc (voir BOGUES de \fBclone\fP(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. .PP .\" commit c579f48edba88380635ab98cb612030e3ed8691e .\" https://sourceware.org/glibc/wiki/Release/2.25#pid_cache_removal .\" FIXME . .\" Review progress of https://bugzilla.redhat.com/show_bug.cgi?id=1469757 Du fait des problèmes susmentionnés, depuis la glibc version 2.25, le cache du PID est retiré\ : les appels à \fBgetpid\fP() appellent toujours le vrai appel système au lieu de renvoyer une valeur mise en cache. .PP Sur Alpha, au lieu d'une paire d'appels système \fBgetpid\fP() et \fBgetppid\fP(), un seul appel \fBgetxpid\fP() est fourni, qui renvoie une paire PID et PID parent. Les fonctions enveloppes \fBgetpid\fP() et \fBgetppid\fP() de la glibc gèrent cela de manière transparente. Voir \fBsyscall\fP(2) pour des détails sur les tableaux de registre. .SH "VOIR AUSSI" \fBclone\fP(2), \fBfork\fP(2), \fBgettid\fP(2), \fBkill\fP(2), \fBexec\fP(3), \fBmkstemp\fP(3), \fBtempnam\fP(3), \fBtmpfile\fP(3), \fBtmpnam\fP(3), \fBcredentials\fP(7), \fBpid_namespaces\fP(7) .PP .SH TRADUCTION La traduction française de cette page de manuel a été créée par Christophe Blaess , Stéphan Rafin , Thierry Vignaud , François Micaux, Alain Portal , Jean-Philippe Guérard , Jean-Luc Coulon (f5ibh) , Julien Cristau , Thomas Huriaux , Nicolas François , Florentin Duneau , Simon Paillard , Denis Barbier , David Prévot , Cédric Boutillier , Frédéric Hantrais et Jean-Philippe MENGUAL . .PP Cette traduction est une documentation libre ; veuillez vous reporter à la .UR https://www.gnu.org/licenses/gpl-3.0.html GNU General Public License version 3 .UE concernant les conditions de copie et de distribution. Il n'y a aucune RESPONSABILITÉ LÉGALE. .PP Si vous découvrez un bogue dans la traduction de cette page de manuel, veuillez envoyer un message à .MT debian-l10n-french@lists.debian.org .ME .