setsid(2) System Calls Manual setsid(2) NAZWA setsid - tworzy sesje i ustawia identyfikator grupy procesu BIBLIOTEKA Standardowa biblioteka C (libc, -lc) SKLADNIA #include pid_t setsid(void); OPIS setsid() tworzy nowa sesje, jesli wywolujacy proces nie jest liderem grupy procesow. Wywolujacy proces jest liderem nowej sesji (tj. jego identyfikator sesji bedzie taki sam, jak jego identyfikator procesu). Proces wywolujacy staje sie rowniez liderem grupy procesow nowej grupy procesu w sesji (tj. jego identyfikator grupy procesu bedzie taki sam, jak jego identyfikator procesu). Proces wywolujacy bedzie jedynym procesem w nowej grupie procesu i w nowej sesji. Poczatkowo, nowa sesja nie ma terminala sterujacego. Szczegoly o pozyskaniu terminala sterujacego przez sesje opisano w podreczniku credentials(7). WARTOSC ZWRACANA W przypadku powodzenia zwracany jest (nowy) identyfikator sesji procesu wywolujacego. W razie wystapienia bledu zwracane jest (pid_t) -1 i ustawiane jest errno, wskazujac blad. BLEDY EPERM Identyfikator grupy procesu dowolnego procesu rowna sie PID-owi procesu wywolujacego. Dlatego, w szczegolnosci, setsid() zawodzi, jesli proces wywolujacy jest juz liderem grupy procesow. STANDARDY POSIX.1-2008. HISTORIA POSIX.1-2001, SVr4. UWAGI Potomek utworzony przez fork(2) dziedziczy identyfikator sesji od swojego rodzica. Wartosc identyfikatora sesji jest takze zachowywana podczas execve(2). Liderem grupy procesow jest proces, ktorego identyfikator grupy procesu rowna sie jego PID-owi. Odmowa wywolania setsid() dla lidera grupy procesow ma na celu zapobiezenie ewentualnosci, gdy lider grupy procesow umiescilby sie w nowej sesji, podczas gdy inne procesy w jego grupie procesow pozostalyby w pierwotnej sesji; taki scenariusz przelamalby scisla, dwupoziomowa hierarchie sesji i grup procesow. Aby zapewnic, ze setsid() sie powiedzie, nalezy wywolac fork(2) i dokonac _exit(2) przez rodzica, podczas gdy potomek (ktory z definicji nie moze byc liderem grupy procesow) wywola setsid(). Jesli sesja ma terminal sterujacy, a znacznik CLOCAL dla tego terminala nie jest ustawiony i wystapi rozlaczenie terminala, to lider sesji otrzyma sygnal SIGHUP. Jesli proces, ktory jest liderem sesji zakonczy sie, to sygnal SIGHUP jest wysylany do kazdego procesu w pierwoszoplanowej grupie procesow terminala sterujacego. ZOBACZ TAKZE setsid(1), getsid(2), setpgid(2), setpgrp(2), tcgetsid(3), credentials(7), sched(7) TLUMACZENIE Tlumaczenie niniejszej strony podrecznika: Michal Kulach Niniejsze tlumaczenie jest wolna dokumentacja. Blizsze informacje o warunkach licencji mozna uzyskac zapoznajac sie z GNU General Public License w wersji 3 lub nowszej. Nie przyjmuje sie ZADNEJ ODPOWIEDZIALNOSCI. Bledy w tlumaczeniu strony podrecznika prosimy zglaszac na adres listy dyskusyjnej . Linux man-pages 6.15 17 maja 2025 r. setsid(2)