Scroll to navigation

setsid(2) System Calls Manual setsid(2)

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

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.

2 maja 2024 r. Linux man-pages 6.9.1