setsid(2) System Calls Manual setsid(2) BEZEICHNUNG setsid - erzeugt eine neue Sitzung und setzt die Prozessgruppenkennung BIBLIOTHEK Standard-C-Bibliothek (libc, -lc) UBERSICHT #include pid_t setsid(void); BESCHREIBUNG setsid() erzeugt eine neue Sitzung, wenn der aufrufende Prozess kein Prozessgruppen-Fuhrer ist. Der aufrufende Prozess wird dann Fuhrer der neuen Sitzung (seine Sitzungskennung ist die gleiche wie die Prozesskennung). Der aufrufende Prozess wird ausserdem zum Fuhrer einer neuen Prozessgruppe in dieser Sitzung (seine Prozessgruppenkennung ist die gleiche wie die Prozesskennung). Der aufrufende Prozess wird der einzige Prozess in der neuen Prozessgruppe und der neuen Sitzung sein. Anfanglich hat die neue Sitzung kein steuerndes Terminal. Fur Details daruber, wie eine Sitzung ein steuerndes Terminal erlangt, siehe credentials(7). RUCKGABEWERT Bei Erfolg wird die (neue) Sitzungskennung des aufrufenden Prozesses zuruckgeliefert. Im Fehlerfall ist der Ruckgabewert (pid_t) -1 und errno wird entsprechend gesetzt. FEHLER EPERM Die Prozessgruppenkennung irgendeines Prozesses der Prozessgruppe ist die PID des aufrufenden Prozesses. Somit schlagt der Aufruf von setsid() insbesondere dann fehl, wenn der aufrufende Prozess bereits ein Prozessgruppen-Fuhrer ist. STANDARDS POSIX.1-2008. GESCHICHTE POSIX.1-2001, SVr4. ANMERKUNGEN Ein mittels fork(2) erzeugter Kindprozess erbt die Sitzungskennung seines Elternprozesses. Die Sitzungskennung bleibt uber einen Aufruf von execve(2) erhalten. Ein Prozessgruppen-Fuhrer ist ein Prozess, dessen Prozessgruppenkennung und Prozesskennung gleich sind. Wenn einem Prozessgruppen-Fuhrer verboten wird, setsid() aufzurufen, wird auch verhindert, dass der Prozessgruppen-Fuhrer sich selbst in einer neuen Sitzung platziert, wahrend andere Prozesse in der Prozessgruppe in ihrer Originalsitzung verbleiben. Solch ein Szenario wurde die strikte zweistufige Hierarchie von Sitzungen und Prozessgruppen verletzen. Um sicher zu stellen, dass setsid() funktioniert, rufen Sie fork(2) auf und lassen Sie den Elternprozess _exit(2) ausfuhren, wahrend das Kind (das bei Definition kein Prozessgruppenleiter sein kann) setsid() aufruft. Falls eine Sitzung ein steuerndes Terminal hat und der Schalter CLOCAL fur dieses Terminal nicht gesetzt ist und das Terminal aufhangt, dann wird dem Sitzungsleitenden ein Signal SIGHUP gesandt. Falls ein Prozess, der ein Sitzungsleitender ist, sich beendet, dann wird ein Signal SIGHUP an jeden Prozess in der Vordergrundprozessgruppe des steuernden Terminals gesandt. SIEHE AUCH setsid(1), getsid(2), setpgid(2), setpgrp(2), tcgetsid(3), credentials(7), sched(7) UBERSETZUNG Die deutsche Ubersetzung dieser Handbuchseite wurde von Stefan Janke , Martin Eberhard Schauer , Dr. Tobias Quathamer und Mario Blattermann erstellt. Diese Ubersetzung ist Freie Dokumentation; lesen Sie die GNU General Public License Version 3 oder neuer bezuglich der Copyright-Bedingungen. Es wird KEINE HAFTUNG ubernommen. Wenn Sie Fehler in der Ubersetzung dieser Handbuchseite finden, schicken Sie bitte eine E-Mail an die Mailingliste der Ubersetzer . Linux man-pages 6.06 31. Oktober 2023 setsid(2)