Provided by: manpages-de-dev_1.11-1_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 || _XOPEN_SOURCE && _XOPEN_SOURCE_EXTENDED
           || /* Seit Glibc 2.12: */ _POSIX_C_SOURCE >= 200809L

       setpgrp() (POSIX.1):
           _SVID_SOURCE || _XOPEN_SOURCE >= 500 ||
           _XOPEN_SOURCE && _XOPEN_SOURCE_EXTENDED
           || /* Seit Glibc 2.19: */ _BSD_SOURCE

       setpgrp() (BSD), getpgrp() (BSD) [vor Glibc 2.19]:
           _BSD_SOURCE &&
               ! (_POSIX_SOURCE || _POSIX_C_SOURCE || _XOPEN_SOURCE ||
                  _XOPEN_SOURCE_EXTENDED || _GNU_SOURCE || _SVID_SOURCE)

BESCHREIBUNG

       Alle  diese  Schnittstellen  sind  unter Linux verfügbar. Sie werden für das Ermitteln und
       Setzen der Prozessgruppen-ID (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  Prozess-ID  des aufrufenden Prozesses verwendet. Falls die pgid gleich Null ist, wird
       PGID des Prozesses pid auf seine Prozess-ID gesetzt.  Wenn  setpgid()  verwendet  wird  um
       einen Prozess von einer Prozessgruppe in eine andere zu verschieben (wie das manche Shells
       tun, wenn Sie Pipelines 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  Sitzungs-ID  dieser
       Gruppe muss mit der Sitzungs-ID 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
       Prozess-ID  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 Prozessgruppen-ID 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 Prozessgruppen-ID eines der Kinder des  aufrufenden  Prozesses
              zu  ändern  und  das  Kind  war in einer anderen Sitzung oder die Prozessgruppen-ID
              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 Prozessgruppen-ID der Eltern. 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.

       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 eine Sitzung über ein steuerndes Terminal verfügt und der Schalter CLOCAL für dieses
       Terminal nicht gesetzt ist und sich das Terminal aufhängt, wird ein SIGHUP an den »Session
       Leader« gesendet. Falls der Session Leader sich beendet, wird auch an alle Prozesse in der
       Vordergrund-Prozessgruppe dieses Terminals ein SIGHUP-Signal gesendet.

       Falls die Beendigung des 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 die Eltern 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  4.04  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 http://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>.