Provided by: manpages-de-dev_4.21.0-2_all bug

BEZEICHNUNG

       setpgid, getpgid, setpgrp, getpgrp - Prozessgruppe setzen/holen

BIBLIOTHEK

       Standard-C-Bibliothek (libc, -lc)

ÜBERSICHT

       #include <unistd.h>

       int setpgid(pid_t pid, pid_t pgid);
       pid_t getpgid(pid_t pid);

       pid_t getpgrp(void);                            /* POSIX.1-Version */
       [[veraltet]] pid_t getpgrp(pid_t pid);        /* BSD-Version */

       int setpgrp(void);                              /* System-V-Version */
       [[veraltet]] int setpgrp(pid_t pid, pid_t pgid);  /* BSD-Version */

   Mit Glibc erforderliche Feature-Test-Makros (siehe feature_test_macros(7)):

       getpgid():
       _XOPEN_SOURCE >= 500
           || /* Seit Glibc 2.12: */ _POSIX_C_SOURCE >= 200809L

       setpgrp() (POSIX.1):
           _XOPEN_SOURCE >= 500
               || /* Seit Glibc 2.19: */ _DEFAULT_SOURCE
               || /* Glibc <= 2.19: */ _SVID_SOURCE

       setpgrp() (BSD), getpgrp() (BSD):
           [Diese sind nur in Glibc vor 2.19 verfügbar]
           _BSD_SOURCE &&
               ! (_POSIX_SOURCE || _POSIX_C_SOURCE || _XOPEN_SOURCE
                   || _GNU_SOURCE || _SVID_SOURCE)

BESCHREIBUNG

       Alle  diese  Schnittstellen  sind  unter  Linux  verfügbar.  Sie  werden für das Ermitteln und Setzen der
       Prozessgruppenkennung (PGID) eines Prozesses verwendet. Die bevorzugten, in POSIX.1 spezifizierten  Arten
       dies  zu erledigen sind: getpgrp(void) zum Ermitteln der PGID des aufrufenden Prozesses und setpgid() für
       das Setzen der PGID eines Prozesses.

       setpgid() setzt die PGID  des  Prozesses  pid  auf  pgid.  Falls  die  pid  gleich  Null  ist,  wird  die
       Prozesskennung  des  aufrufenden  Prozesses  verwendet.  Falls  die  pgid  gleich Null ist, wird PGID des
       Prozesses pid auf seine Prozesskennung gesetzt. Wenn setpgid() verwendet wird, um einen Prozess von einer
       Prozessgruppe  in eine andere zu verschieben (wie das manche Shells tun, wenn sie Pipes erzeugen), müssen
       beide Prozessgruppen Teil der gleichen Sitzung sein (siehe setsid(2) und credentials(7)). In diesem  Fall
       gibt  die  pgid  einer  bestehende  Prozessgruppe  an, deren Mitgliedschaft erworben werden soll, und die
       Sitzungskennung dieser Gruppe muss mit der Sitzungskennung des wechselnden Prozesses übereinstimmen.

       Die POSIX.1-Version von getpgrp() erwartet kein Argument und liefert die PGID des  aufrufenden  Prozesses
       zurück.

       getpgid()  gibt die PGID des Prozesses pid zurück. Falls pid gleich Null ist, wird die Prozesskennung des
       aufrufenden Prozesses verwendet. (Die Ermittlung einer PGID eines anderen Prozesses als  des  aufrufenden
       ist selten erforderlich. Für diese Aufgabe wird die POSIX.1-Version von getpgrp() bevorzugt.)

       Das System-V-artige setpgrp() erwartet kein Argument und ist äquivalent zu setpgid(0, 0).

       Der BSD-spezifische setpgrp()-Aufruf erwartet die Argumente pid und pgid und ruft Folgendes auf:

           setpgid(pid, pgid)

       Seit  Glibc  2.19 wird die BSD-spezifische Funktion setpgrp() nicht mehr in <unistd.h> verwendet. Aufrufe
       sollten durch den setpgid()-Aufruf ersetzt werden, wie oben gezeigt.

       Der BSD-spezifische getpgrp()-Aufruf erwartet ein einzelnes Argument pid und ruft Folgendes auf:

           getpgid(pid)

       Seit Glibc 2.19 wird die BSD-spezifische Funktion getpgrp() nicht mehr in <unistd.h>  verwendet.  Aufrufe
       sollten  durch  das  POSIX-konforme  getpgrp()  ersetzt werden, welches keine Argumente akzeptiert (falls
       beabsichtigt ist, die PGID des Aufrufenden  zu  ermitteln),  oder  mit  dem  getpgid()-Aufruf,  wie  oben
       gezeigt.

RÜCKGABEWERT

       Bei  Erfolg  geben  setpgid() und setpgrp() Null zurück. Bei einem Fehler wird -1 zurückgegeben und errno
       gesetzt, um den Fehler anzuzeigen.

       Der POSIX.1-getpgrp() gibt immer die PGID des Aufrufenden zurück.

       getpgid() und das BSD-spezifische getpgrp() geben bei Erfolg immer eine Prozessgruppe zurück.  Bei  einem
       Fehler wird -1 zurückgegeben und errno gesetzt, um den Fehler anzuzeigen.

FEHLER

       EACCES Es  wurde versucht, die Prozessgruppenkennung eines der Kinder des aufrufenden Prozesses zu ändern
              und das Kind hat bereits ein execve(2) durchgeführt (setpgid(), setpgrp()).

       EINVAL pgid ist kleiner als 0 (setpgid(), setpgrp()).

       EPERM  Es wurde versucht, einen Prozess in eine Prozessgruppe in einer  anderen  Sitzung  zu  verschieben
              oder  die  Prozessgruppenkennung eines der Kinder des aufrufenden Prozesses zu ändern und das Kind
              war in einer anderen Sitzung oder die Prozessgruppenkennung  eines  »session  leaders«  zu  ändern
              (setpgid(), setpgrp()).

       ESRCH  Für  getpgid():  pid passt auf keinen Prozess. Für setpgid(): pid ist nicht der aufrufende Prozess
              und kein Kind des aufrufenden Prozesses.

STANDARDS

       setpgid() und die Version von getpgrp() ohne Argumente sind zu POSIX.1-2001 konform.

       POSIX.1-2001 spezifiziert auch getpgid() und die Version von setpgrp(), die kein Argument akzeptiert. (In
       POSIX.1-2008 ist diese setpgrp()-Spezifikation als obsolet markiert.)

       Die  Version von getpgrp() mit einem Argument und die Version von setpgrp, die zwei Argumente akzeptiert,
       stammen von 4.2BSD ab und sind nicht in POSIX.1 spezifiziert.

ANMERKUNGEN

       Ein mittels fork(2) erstelltes Kind erbt die Prozessgruppenkennung des  Elternprozesses.  Die  PGID  wird
       über ein execve(2) hinweg erhalten.

       Jede  Prozessgruppe  ist  Teilnehmer  einer  Sitzung und jeder Prozess ist Teilnehmer der Sitzung, an der
       seine Prozessgruppe teilnimmt. (Siehe credentials(7).)

       Einer Sitzung kann ein steuerndes Terminal zugeordnet sein. Zu jeder Zeit kann eine (und  nur  eine)  der
       Prozessgruppen die Vordergrund-Prozessgruppe für das Terminal sein; die verbleibenden Prozessgruppen sind
       im Hintergrund. Falls vom Terminal ein Signal erzeugt wird (z. B. die Betätigung der Unterbrechungstaste,
       um  ein  SIGINT  zu  bewirken),  wird  dieses  Signal  an  die Vordergrund-Prozessgruppe gesendet. (Siehe
       termios(3) für eine Beschreibung der Zeichen, die Signale erzeugen.)  Nur  die  Vordergrund-Prozessgruppe
       kann  vom Terminal lesen (mittels read(2)); wenn das eine Hintergrund-Prozessgruppe versucht, wird an sie
       ein SIGTSTP-Signal gesendet, das sie »in den  Zwangsurlaub  schickt«.  Die  Funktionen  tcgetpgrp(3)  und
       tcsetpgrp(3)  werden  verwendet,  um  die Vordergrund-Prozessgruppe des steuernden Terminals zu ermitteln
       oder zu setzen.

       Die Systemaufrufe setpgid() und getpgrp() werden  von  Programmen  wie  der  bash(1)  zur  Erzeugung  von
       Prozessgruppen verwendet, um die Shell-Jobs zu steuern.

       Falls  die  Beendigung eines Prozesses eine Prozessgruppe verwaisen lässt und wenn jedes Mitglied der neu
       verwaisten Prozessgruppe gestoppt wird, wird ein SIGHUP-Signal gefolgt von einem SIGCONT-Signal an  jeden
       Prozess  in  der  neu verwaisten Prozessgruppe gesendet werden. Eine verwaiste Prozessgruppe ist eine, in
       denen der Elternprozess eines jeden  Mitglieds  der  Prozessgruppe  entweder  selbst  auch  Mitglied  der
       Prozessgruppe   oder   Mitglied   einer   Prozessgruppe   in  einer  anderen  Sitzung  sind  (siehe  auch
       credentials(7)).

SIEHE AUCH

       getuid(2), setsid(2), tcgetpgrp(3), tcsetpgrp(3), termios(3), credentials(7)

ÜBERSETZUNG

       Die deutsche Übersetzung dieser Handbuchseite wurde von Patrick Rother <krd@gulu.net>,  Helge  Kreutzmann
       <debian@helgefjell.de>,   Martin   Eberhard   Schauer  <Martin.E.Schauer@gmx.de>  und  Mario  Blättermann
       <mario.blaettermann@gmail.com> erstellt.

       Diese Übersetzung  ist  Freie  Dokumentation;  lesen  Sie  die  GNU  General  Public  License  Version  3
       ⟨https://www.gnu.org/licenses/gpl-3.0.html⟩ 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  die
       Mailingliste der Übersetzer ⟨debian-l10n-german@lists.debian.org⟩.