Provided by: manpages-pl-dev_4.28.0-2_all bug

NAZWA

       setsid - tworzy sesję i ustawia identyfikator grupy procesu

BIBLIOTEKA

       Standardowa biblioteka C (libc, -lc)

SKŁADNIA

       #include <unistd.h>

       pid_t setsid(void);

OPIS

       setsid()  tworzy  nową  sesję, jeśli wywołujący proces nie jest liderem grupy procesów. Wywołujący proces
       jest liderem nowej sesji (tj. jego identyfikator sesji będzie taki sam, jak jego identyfikator  procesu).
       Proces  wywołujący  staje  się  również  liderem  grupy  procesów  nowej  grupy procesu w sesji (tj. jego
       identyfikator grupy procesu będzie taki sam, jak jego identyfikator procesu).

       Proces wywołujący będzie jedynym procesem w nowej grupie procesu i w nowej sesji.

       Początkowo, nowa sesja nie ma terminala sterującego. Szczegóły o pozyskaniu terminala  sterującego  przez
       sesję opisano w podręczniku credentials(7).

WARTOŚĆ ZWRACANA

       W przypadku powodzenia zwracany jest (nowy) identyfikator sesji procesu wywołującego. W razie wystąpienia
       błędu zwracane jest (pid_t) -1 i ustawiane jest errno, wskazując błąd.

BŁĘDY

       EPERM  Identyfikator  grupy  procesu dowolnego procesu równa się PID-owi procesu wywołującego. Dlatego, w
              szczególności, setsid() zawodzi, jeśli proces wywołujący jest już liderem grupy procesów.

STANDARDY

       POSIX.1-2008.

HISTORIA

       POSIX.1-2001, SVr4.

UWAGI

       Potomek utworzony przez fork(2) dziedziczy identyfikator sesji od swojego rodzica. Wartość identyfikatora
       sesji jest także zachowywana podczas execve(2).

       Liderem grupy procesów jest proces, którego identyfikator grupy procesu równa się  jego  PID-owi.  Odmowa
       wywołania  setsid()  dla  lidera  grupy  procesów  ma na celu zapobieżenie ewentualności, gdy lider grupy
       procesów umieściłby się w nowej sesji, podczas gdy inne procesy w  jego  grupie  procesów  pozostałyby  w
       pierwotnej  sesji; taki scenariusz przełamałby ścisłą, dwupoziomową hierarchię sesji i grup procesów. Aby
       zapewnić, że setsid() się powiedzie, należy wywołać fork(2) i dokonać _exit(2) przez rodzica, podczas gdy
       potomek (który z definicji nie może być liderem grupy procesów) wywoła setsid().

       Jeśli sesja ma terminal sterujący, a znacznik CLOCAL dla tego terminala  nie  jest  ustawiony  i  wystąpi
       rozłączenie terminala, to lider sesji otrzyma sygnał SIGHUP.

       Jeśli  proces, który jest liderem sesji zakończy się, to sygnał SIGHUP jest wysyłany do każdego procesu w
       pierwoszoplanowej grupie procesów terminala sterującego.

ZOBACZ TAKŻE

       setsid(1), getsid(2), setpgid(2), setpgrp(2), tcgetsid(3), credentials(7), sched(7)

TŁUMACZENIE

       Tłumaczenie niniejszej strony podręcznika: Michał Kułach <michal.kulach@gmail.com>

       Niniejsze tłumaczenie jest wolną dokumentacją. Bliższe informacje  o  warunkach  licencji  można  uzyskać
       zapoznając   się   z   GNU General Public License w wersji 3   lub  nowszej.  Nie  przyjmuje  się  ŻADNEJ
       ODPOWIEDZIALNOŚCI.

       Błędy w  tłumaczeniu  strony  podręcznika  prosimy  zgłaszać  na  adres  listy  dyskusyjnej  manpages-pl-
       list@lists.sourceforge.net.

Linux man-pages 6.9.1                            2 maja 2024 r.                                        setsid(2)