Provided by: manpages-pl-dev_4.23.1-1_all bug

NAZWA

       exit - powoduje normalne zakończenie programu

BIBLIOTEKA

       Standardowa biblioteka C (libc, -lc)

SKŁADNIA

       #include <stdlib.h>

       [[noreturn]] void exit(int status);

OPIS

       Funkcja exit() powoduje normalne zakończenie procesu i zwrócenie najmniej znaczącego bajtu statusu status
       & 0xFF) procesowi macierzystemu (zob. wait(2)).

       Wszystkie  funkcje  zarejestrowane  przez  atexit(3) i on_exit(3) są wywoływane w kolejności odwrotnej do
       kolejności ich rejestracji.  (Możliwe  jest,  aby  którakolwiek  z  tych  funkcji  użyła   atexit(3)  lub
       on_exit(3),  aby  zarejestrować  dodatkowe  funkcje  wykonywane podczas kończenia działania procesu; nowe
       funkcje są dodawane na początek listy funkcji przeznaczonych do wywołania). Jeśli jedna  z  tych  funkcji
       nie  powróci  (to  jest wywoła _exit(2) lub się zabije za pomocą sygnału), to żadna z pozostałych funkcji
       nie będzie wywołana  i  dalsze  przetwarzanie  (w  szczególności  opróżnianie  strumieni  stdio(3))  jest
       przerywane.  Jeśli ta sama funkcja zostanie  zarejestrowana za pomocą atexit(3) lub on_exit(3) więcej niż
       raz, to będzie wywołana tyle razy, ile razy była zarejestrowana.

       Wszystkie otwarte strumienie stdio(3) są opróżniane i  zamykane.  Pliki  utworzone  przez  tmpfile(3)  są
       usuwane.

       Standard  C  wymienia dwie definicje EXIT_SUCCESS i EXIT_FAILURE, które mogą zostać przekazane do exit(),
       aby wskazać, odpowiednio, czy zakończenie było pomyślne, czy też nie.

WARTOŚĆ ZWRACANA

       Funkcja exit() nie powraca.

ATRYBUTY

       Informacje o pojęciach używanych w tym rozdziale można znaleźć w podręczniku attributes(7).
       ┌─────────────────────────────────────────────────┬────────────────────────┬────────────────────────────┐
       │ InterfejsAtrybutWartość                    │
       ├─────────────────────────────────────────────────┼────────────────────────┼────────────────────────────┤
       │ exit()                                          │ Bezpieczeństwo wątkowe │ MT-niebezpieczne race:exit │
       └─────────────────────────────────────────────────┴────────────────────────┴────────────────────────────┘

       Funkcja exit() używa niezabezpieczonej zmiennej globalnej, w związku z czym nie jest wątkowo bezpieczna.

STANDARDY

       C11, POSIX.1-2008.

HISTORIA

       C89, POSIX.1-2001, SVr4, 4.3BSD.

UWAGI

       Nie jest zdefiniowane zachowanie, gdy jedna z  funkcji  zarejestrowanych  przez  atexit(3)  i  on_exit(3)
       wywoła  exit()  lub longjmp(3). Proszę zauważyć, że wywołanie execve(2) usuwa rejestracje utworzone przez
       atexit(3) i on_exit(3).

       Używanie EXIT_SUCCESS i EXIT_FAILURE zamiast 0 i pewnej wartości niezerowej, jak 1 lub -1, zapewnia nieco
       lepszą przenośność (do środowisk nieuniksowych). W szczególności VMS używa innej konwencji.

       BSD próbował zestandaryzować kody zakończenia (co przyjęły niektóre biblioteki C, w  tym także biblioteka
       GNU C); patrz plik <sysexits.h>.

       Po wykonaniu exit(), status zakończenia musi być przetransmitowany do  procesu  macierzystego.  Występują
       trzy przypadki:

       •  Jeśli  proces  macierzysty  ma  ustawione  SA_NOCLDWAIT  lub ma ustawioną procedurę obsługi SIGCHLD na
          SIG_IGN, to status jest odrzucany, a potomek natychmiast ginie.

       •  Jeśli proces macierzysty oczekiwał na potomka, jest on informowany o statusie zakończenia,  a  potomek
          natychmiast ginie.

       •  W  innych sytuacjach, potomek staje się procesem „zombie”: większość zasobów procesu jest odzyskiwana,
          jednak wpis zawierający minimalną dawkę informacji o procesie potomnym (status zakończenia, statystyki
          użycia zasobów) jest zachowywany w tablicy procesów. Pozwala to procesowi macierzystemu na  późniejsze
          użycie  waitpid(2) (lub podobnego), aby poznać status zakończenia potomka; w tym momencie wpis procesu
          zombie jest zwalniany.

       Jeśli implementacja obsługuje sygnał SIGCHLD, to zostanie on  wysłany  do  procesu  macierzystego.  Jeśli
       proces macierzysty ustawił SA_NOCLDWAIT, to nie jest zdefiniowane, czy sygnał SIGCHLD zostanie wysłany.

   Sygnały wysyłane do innych procesów
       Jeśli  proces  wychodzący  jest inicjatorem sesji a sterujący nim terminal jest terminalem sterującym dla
       sesji,  to  do  każdego  z  procesów  należących  do  grupy  procesów  pierwszoplanowych  tego  terminala
       sterującego,  zostanie  wysłany  sygnał  SIGHUP, a terminal zostanie odłączony od sesji umożliwiając jego
       przejęcie przez nowy proces sterujący.

       Jeśli zakończenie procesu powoduje osierocenie grupy procesów, a którykolwiek z członków nowo osieroconej
       grupy procesów jest zatrzymany, to po sygnale SIGHUP do każdego z procesów tej  grupy  procesów  zostanie
       wysłany sygnał SIGCONT. Opis osieroconych grup procesów można znaleźć w podręczniku setpgid(2).

       Za  wyjątkiem  przypadków  opisanych  powyżej,  gdy  sygnalizowane  procesy  mogą  być  potomkami procesu
       kończonego, zakończenie procesu zwykle nie powoduje wysłania sygnału do potomków tego  procesu.  Jednakże
       proces  może skorzystać z operacji PR_SET_PDEATHSIG prctl(2), aby spowodować otrzymanie sygnału, gdy jego
       rodzic zakończy się.

ZOBACZ TAKŻE

       _exit(2), get_robust_list(2), setpgid(2), wait(2), atexit(3), on_exit(3), tmpfile(3)

TŁUMACZENIE

       Autorami polskiego tłumaczenia niniejszej strony podręcznika  są:  Adam  Byrtek  <alpha@irc.pl>,  Andrzej
       Krzysztofowicz   <ankry@green.mf.pg.gda.pl>,   Robert   Luberda   <robert@debian.org>   i  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.8                              2 maja 2024 r.                                          exit(3)