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

BEZEICHNUNG

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

ÜBERSICHT

       #include <sys/types.h>
       #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-Versionen <= 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 entsprechend gesetzt.

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

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.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 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 <debian-l10n-german@lists.debian.org>.