setsid(2) setsid(2)
NAME
setsid - Sitzungsnummer einstellen
SYNTAX
#include <sys/types.h>
#include <unistd.h>
pidt setsid(void);
BESCHREIBUNG
Wenn der aufrufende Prozeß nicht bereits ein Prozeßgruppenleiter ist,
stellt setsid() die Prozeßgruppennummer und die Sitzungsnummer des
aufrufenden Prozesses auf die Prozeßnummer des aufrufenden Prozesses
und gibt das steuernde Terminal des Prozesses frei.
setsid() schlägt fehl und liefert einen Fehler, wenn folgende Bedin-
gung erfüllt ist:
EPERM Der aufrufende Prozeß ist bereits Prozeßgruppenleiter, oder
es gibt andere Prozesse, deren Prozeßgruppennummer gleich
der Prozeßnummer des aufrufenden Prozesses ist.
HINWEISE
Wenn der aufrufende Prozeß die letzte Komponente einer Pipe ist, die
von einer Job-Kontroll-Shell gestartet worden ist, kann die Shell den
aufrufenden Prozeß zum Prozeßgruppenleiter machen. Die anderen Pro-
zesse der Pipeline werden Mitglieder der Prozeßgruppe. In diesem Fall
schlägt der Aufruf von setsid() fehl. Aus diesem Grund sollte ein Pro-
zeß, der setsid() aufruft und davon ausgeht, Teil einer Pipe zu sein,
vorher immer ein fork(2) ausführen; der Vaterprozeß sollte beendet
werden, und der Sohnprozeß sollte setsid() aufrufen und dadurch versi-
chern, daß der Prozeß zuverlässig funktioniert, ob er nun von Job-
Kontroll-Shells aufgerufen wird oder nicht.
ERGEBNIS
Nach erfolgreicher Ausführung liefert setsid() die Sitzungsnummer des
aufrufenden Prozesses zurück. Andernfalls wird -1 zurückgegeben und
der Fehlertyp durch errno angezeigt.
SIEHE AUCH
exec(2), exit(2), fork(2), getpid(2), getpgid(2), getsid(2),
setpgid(2), setpgrp(2), signal(2), sigsend(2).
Seite 1 Reliant UNIX 5.44 Gedruckt 11/98