Manpages

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 Prozess−ID des aufrufenden Prozesses zurück. (Dies wird oft von Routinen benutzt, die einen eindeutigen Namen einer temporären Datei erzeugen.)

getppid() returns the process ID of the parent of the calling process. This will be either the ID of the process that created this process using fork(), or, if that process has already terminated, the ID of the process to which this process has been reparented (either init(1) or a "subreaper" process defined via the prctl(2) PR_SET_CHILD_SUBREAPER operation).

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.

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.

SIEHE AUCH

clone(2), fork(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 4.12 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 [AT] burg.de>, Chris Leick <c.leick [AT] vollbio.de> und Mario Blättermann <mario.blaettermann [AT] gmail.com> 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 [AT] lists.org>.

COMMENTS