Provided by: manpages-de-dev_2.5-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 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 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  4.15  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>.