setsid(2) erzeugt eine neue Sitzung und setzt die Prozessgruppen-ID

ÜBERSICHT

#include <unistd.h>

pid_t setsid(void);

BESCHREIBUNG

setsid() erzeugt eine neue Sitzung, wenn der aufrufende Prozess kein Prozessgruppen-Führer ist. Der aufrufende Prozess wird dann Führer der neuen Sitzung (seine Sitzungs-ID ist die gleiche wie die Prozess-ID). Der aufrufende Prozess wird außerdem zum Führer einer neuen Prozessgruppe in dieser Sitzung (seine Prozessgruppen-ID ist die gleiche wie die Prozess-ID).

Der aufrufende Prozess wird der einzige Prozess in der neuen Prozessgruppe und der neuen Sitzung sein. Die neue Sitzung hat kein steuerndes Terminal.

RÜCKGABEWERT

Bei Erfolg wird die (neue) Sitzungs-ID des aufrufenden Prozesses zurückgeliefert. Im Fehlerfall ist der Rückgabewert (pid_t) -1 und errno wird entsprechend gesetzt.

FEHLER

EPERM
Die Prozessgruppen-ID irgendeines Prozesses der Prozessgruppe ist die PID des aufrufenden Prozesses. Somit schlägt der Aufruf von setsid() insbesondere dann fehl, wenn der aufrufende Prozess bereits ein Prozessgruppen-Führer ist.

KONFORM ZU

POSIX.1-2001, POSIX.1-2008, SVr4.

ANMERKUNGEN

Ein mittels fork(2) erzeugter Kindprozess erbt die Sitzungs-ID seines Vorfahren. Die Sitzungs-ID bleibt über einen Aufruf von execve(2) erhalten.

Ein Prozessgruppen-Führer ist ein Prozess, dessen Prozessgruppen-ID und Prozess-ID gleich sind. Wenn einem Prozessgruppen-Führer verboten wird, setsid() aufzurufen, wird auch verhindert, dass der Prozessgruppen-Führer sich selbst in einer neuen Sitzung platziert, während andere Prozesse in der Prozessgruppe in ihrer Originalsitzung verbleiben. Solch ein Szenario würde die strikte zweistufige Hierarchie von Sitzungen und Prozessgruppen verletzen. Um sicher zu stellen, dass setsid() funktioniert, rufen Sie fork(2) und _exit(2) auf, und lassen Sie setsid() durch den Kindprozess ausführen.

KOLOPHON

Diese Seite ist Teil der Veröffentlichung 4.06 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 Stefan Janke <[email protected]>, Martin Eberhard Schauer <[email protected]> und Mario Blättermann <[email protected]> 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 <[email protected]>.