Provided by: manpages-de-dev_4.15.0-9_all bug

BEZEICHNUNG

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

Ü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 */
       pid_t getpgrp(pid_t pid);            /* BSD-Version */

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

   Mit Glibc erforderliche 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.

KONFORM ZU

       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)

KOLOPHON

       Diese Seite  ist  Teil  der  Veröffentlichung  5.13  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  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⟩.