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.
 
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 seit. 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 3.42 des Projekts Linux-
  
man-pages. Eine Beschreibung des Projekts und Informationen, wie Fehler
  gemeldet werden können, 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> 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>.