Provided by: manpages-de-dev_2.16-1_all 

BEZEICHNUNG
getpid, getppid - gibt die Prozessidentifikation zurück
ÜBERSICHT
#include <sys/types.h>
#include <unistd.h>
pid_t getpid(void);
pid_t getppid(void);
BESCHREIBUNG
getpid() gibt die Prozesskennung (PID) des aufrufenden Prozesses zurück. (Dies wird oft von Routinen
benutzt, die einen eindeutigen Namen einer temporären Datei erzeugen.)
getppid() liefert die Prozesskennung des Elternprozesses des aufrufenden Prozesses zurück. Dies wird
entweider die Kennung des Prozesses, der diesen Prozess mittels fork() erstellte, oder, falls dieser
Prozess bereits beendet wurde, die Kennung des Prozesses, an der neue Elternprozess für diesen Prozess
geworden ist (entweder init(1) oder ein mittels der Aktion prctl(2) PR_SET_CHILD_SUBREAPER definierter
»subreaper«-Prozess).
FEHLER
Diese Funktionen sind immer erfolgreich.
KONFORM ZU
POSIX.1-2001, POSIX.1-2008, 4.3BSD, SVr4.
ANMERKUNGEN
Falls sich der Elternprozess des aufrufenden Prozesses in einem anderen PID-Namensraum befindet (siehe
pid_namespaces(7)), gibt getppid() 0 zurück.
Aus der Sicht des Kernels ist die PID (die sich alle Threads in einem Multithreaded-Prozess teilen)
manchmal auch als Thread-Gruppenkennung (TGID) bekannt. Dies steht im Gegensatz zu der Kernel Thread ID
(TID), die für jeden Thread eindeutig ist. Für weitere Details siehe gettid(2) und die Diskussion des
Schalters CLONE_THREAD in clone(2).
Unterschiede C-Bibliothek/Kernel
Von Version 2.3.4 bis einschließlich Version 2.24 der Glibc speicherte die Glibc-Wrapper-Funktion für
getpid() PIDs temporär, um zusätzliche Systemaufrufe zu vermeiden, wenn ein Prozess getpid() mehrmals
aufruft. Normalerweise war dieses Zwischenspeichern nicht sichtbar, aber das korrekte Funktionieren
beruhte auf der Unterstützung in den Wrapper-Funktionen für fork(2), vfork(2) und clone(2): Wenn eine
Anwendung die Glibc-Wrapper für diese Systemaufrufe durch Benutzung von syscall(2) umging, dann würde ein
Aufruf von getpid() im Kindprozess den falschen Wert zurückliefern (um es zu präzisieren: Er wird die PID
des Elternprozesses zurückgeben). Zusätzlich gab es Fälle, bei dem getpid() den falschen Wert sogar dann
zurückgab, wenn clone(2) über die Glibc-Wrapper-Funktion aufgerufen wurde. (Für die Besprechung eines
solchen Falles siehe FEHLER in clone(2).) Desweiteren war die Komplexität des Zwischenspeichercodes über
die Jahre eine Quelle mehrerer Fehler innerhalb der Glibc.
Aufgrund der vorgenannten Probleme ist der PID-Zwischenspeichercode seit Version 2.25 der Glibc entfernt;
Aufrufe von getpid() lösen immer den tatsächlichen Systemaufruf aus, statt einen zwischengespeicherten
Wert zurückzuliefern.
Unter Alpha wird statt eines Paars von getpid()- und getppid()-Systemaufrufen ein einzelner Systemaufruf
getxpid() bereitgestellt, der ein Paar von realen und effektiven PIDs bereitstellt. Die
Glibc-Wrapper-Funktionen getpid() und getppid() gehen damit transparent um. Siehe syscall(2) für Details
im Hinblick auf Registerabbildungen.
SIEHE AUCH
clone(2), fork(2), gettid(2), kill(2), exec(3), mkstemp(3), tempnam(3), tmpfile(3), tmpnam(3),
credentials(7), pid_namespaces(7)
KOLOPHON
Diese Seite ist Teil der Veröffentlichung 5.03 des Projekts Linux-man-pages. Eine Beschreibung des
Projekts, Informationen, wie Fehler gemeldet werden können sowie die aktuelle Version dieser Seite finden
sich unter https://www.kernel.org/doc/man-pages/.
ÜBERSETZUNG
Die deutsche Übersetzung dieser Handbuchseite wurde von Stefan Janke <gonzo@burg.studfb.unibw-
muenchen.de>, Chris Leick <c.leick@vollbio.de>, Mario Blättermann <mario.blaettermann@gmail.com> und
Helge Kreutzmann <debian@helgefjell.de> erstellt.
Diese Übersetzung ist Freie Dokumentation; lesen Sie die GNU General Public License Version 3 oder neuer
bezüglich der Copyright-Bedingungen. Es wird KEINE HAFTUNG übernommen.
Wenn Sie Fehler in der Übersetzung dieser Handbuchseite finden, schicken Sie bitte eine E-Mail an
<debian-l10n-german@lists.debian.org>.
Linux 6. März 2019 GETPID(2)