getpid

GETPID(2)                  Linux-Programmierhandbuch                 GETPID(2)



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)