table of contents
- bookworm 4.18.1-1
- bookworm-backports 4.24.0-2~bpo12+1
- testing 4.24.0-2
- unstable 4.25.0-1
getpid(2) | System Calls Manual | getpid(2) |
NAAM¶
getpid, getppid - verkrijg proces identiteit
BIBLIOTHEEK¶
Standard C bibliotheek (libc, -lc)
SAMENVATTING¶
#include <unistd.h>
pid_t getpid(void); pid_t getppid(void);
BESCHRIJVING¶
getpid() geeft het proces ID terug van het huidige proces. (Dit wordt vaak gebruikt door routines die unieke tijdelijke bestandsnamen maken.)
getppid geeft het proces ID van de ouder van het aanroepende proces terug. Dat zal ofwel het ID van het proces zijn dat het proces aanmaakte door fork(2), of, als dat proces al werd beëindigt, het ID van het proces aan welk ouder-proces het werd vastgemaakt (ofwel init(1) of een "subreaper" proces zoals gedefinieerd via de prctl(2) PR_SET_CHILD_SUBREAPER operatie).
FOUTEN¶
Deze functies slagen altijd.
VOLDOET AAN¶
POSIX.1-2001, POSIX.1-2008, 4.3BSD, SVr4.
OPMERKINGEN¶
Als de ouder van de aanroeper in een andere PID naamgebied zit (zie pid_namespaces(7)), dan geeft getppid() 0 terug.
Vanuit kernel perspectief is de PID (die wordt gedeeld door alle threads in een multi-threaded proces) ook bekend als een thread groep ID (TGID). Dit in tegenstelling tot de kernel thread ID (TID), die unique is voor elke thread. Voor meer details, zie gettid(2) en de discussie over de CLONE_THREAD vlag in clone(2).
C library/kernel verschillen¶
Vanaf glibc 2.3.4 tot en met glibc 2.24, cachte de glibc omwikkel functie voor getpid() PID´s, met als doel het voorkomen van additionele systeem aanroepen wanneer een proces getpid() herhaaldelijk zou aanroepen. Normaliter was het caching onzichtbaar maar de correctie werking vertrouwde op ondersteuning in de omwikkel functies voor fork(2), vfork(2), en clone(2): zodra een applicatie de glibc omwikkel functie omzeilde door aanroep van syscall(2) dan zou de aanroep van getpid() in het kind de verkeerde waarde teruggegeven hebben (om precies te zijn: die zou de PID van het ouder proces terug geven). Additioneel, waren er gevallen waar getpid() de verkeerde waarde kon terug geven zelfs bij het aanroepen van clone(2) via de glibc omwikkel functie. (Zie BUGS in clone(2) voor een discussie over zo´n geval). Verder is de complexiteit van de caching code een bron van enkele bugs in glibc geweest gedurende meerdere jaren.
Vanwege de voorgenoemde problemen werd vanaf glibc 2.25 de PID cache verwijderd: aanroepen van getpid() roepen ook de daadwerkelijke systeem aanroep aan, in plaats van het teruggeven van een gecachte waarde.
Op Alpha wordt voorzien in een enkele getxpid() systeem aanroep, die het paar PID en ouder PID terug geeft, in plaats van een paar van geitpid() en getppid() systeem aanroepen. De glibc getpid() en getppid() omwikkel functies handelen dit transparant af. Zie syscall(2) voor details betreffende de register indeling.
ZIE OOK¶
clone(2), fork(2), gettid(2), kill(2), exec(3), mkstemp(3), tempnam(3), tmpfile(3), tmpnam(3), credentials(7), pid_namespaces(7)
VERTALING¶
De Nederlandse vertaling van deze handleiding is geschreven door Jos Boersema <joshb@xs4all.nl>, Mario Blättermann <mario.blaettermann@gmail.com> en Luc Castermans <luc.castermans@gmail.com>
Deze vertaling is vrije documentatie; lees de GNU General Public License Version 3 of later over de Copyright-voorwaarden. Er is geen AANSPRAKELIJKHEID.
Indien U fouten in de vertaling van deze handleiding zou vinden, stuur een e-mail naar debian-l10n-dutch@lists.debian.org.
22 januari 2023 | Linux man-pagina's 6.03 |