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

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>.