Provided by: manpages-de-dev_1.4-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

       setpgrp() (BSD), getpgrp() (BSD):
           _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 ist  zu  setpgid(pid,  pgid)
       äquivalent.

       Der  BSD-spezifische  getpgrp()-Aufruf  erwartet  ein  einzelnes  Argument  pid  und  ist zu getpgid(pid)
       äquivalent.

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

       This  page  is  part  of  release  3.54 of the Linux man-pages project. A description of the project, and
       information about reporting bugs, can be found at 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> und Martin Eberhard Schauer <Martin.E.Schauer@gmx.de> 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>.

Linux                                             31. Juli 2013                                       SETPGID(2)