Provided by: manpages-de-dev_4.27.0-1_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()).

       EPERM  Die Ziel-Prozessgruppe existiert nicht. (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

       getpgid()
       setpgid()
       getpgrp() (keine Argumente)
       setpgrp() (keine Argumente)
              POSIX.1-2008 (aber siehe GESCHICHTE).

       setpgrp() (2 Argumente)
       getpgrp() (1 Argument)
              Keine.

GESCHICHTE

       getpgid()
       setpgid()
       getpgrp() (keine Argumente)
              POSIX.1-2001.

       setpgrp() (keine Argumente)
              POSIX.1-2001. POSIX.1-2008 markiert es als obsolet.

       setpgrp() (2 Argumente)
       getpgrp() (1 Argument)
              4.2BSD.

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

Linux man-pages 6.9.1                              2. Mai 2024                                        setpgid(2)