Provided by: manpages-pl-dev_0.7-1_all bug

NAZWA

       exit - powoduje normalne zakończenie programu

SKŁADNIA

       #include <stdlib.h>

       void exit(int status);

OPIS

       Funkcja  exit()  powoduje  normalne  zakończenie  procesu  i zwrócenie procesowi-rodzicowi
       wartości status & 0377 (patrz 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-Unsafe race:exit │
       └──────────┴────────────────────────┴─────────────────────┘
       Funkcja exit() używa niezabezpieczonej zmiennej globalnej,  w  związku  z  czym  nie  jest
       wątkowo bezpieczna.

ZGODNE Z

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

UWAGI

       Nie  jest  zdefiniowane,  co  się  stanie,  jeśli  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; patrz plik <sysexits.h>.

       Po  wywołaniu  exit()  kod  zakończenia  musi  zostać przekazany do procesu macierzystego.
       Możliwe są  trzy  przypadki.  Jeśli  proces  macierzysty  ma  ustawione  SA_NOCLDWAIT  lub
       ustawiony  uchwyt SIGCHLD na SIG_IGN, to kod ten jest ignorowany. Jeśli proces macierzysty
       czekał na potomny, jest on powiadamiany o kodzie powrotu. W obu przypadkach  kończący  się
       proces  ginie  natychmiast.  Jeśli  proces  macierzysty  nie  poinformował,  że  nie  jest
       zainteresowany kodem zakończenia ani nie czeka, kończący się proces  przechodzi  w  proces
       "zombie"   (który   nie   zawiera  nic  oprócz  pojedynczego  bajtu  reprezentującego  kod
       zakończenia) tak, że  proces  macierzysty  może  poznać  kod  powrotu  poprzez  późniejsze
       wywołanie jednej z funkcji wait(2).

       Jeśli   implementacja   wspiera   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.

       Jeśli  proces  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).

ZOBACZ TAKŻE

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

O STRONIE

       Angielska  wersja  tej  strony  pochodzi  z  wydania  4.07  projektu Linux man-pages. Opis
       projektu, informacje dotyczące zgłaszania błędów oraz  najnowszą  wersję  oryginału  można
       znaleźć pod adresem https://www.kernel.org/doc/man-pages/.

TŁUMACZENIE

       Autorami  polskiego  tłumaczenia  niniejszej  strony podręcznika man są: Adam Byrtek (PTM)
       <abyrtek@priv.onet.pl>, Andrzej Krzysztofowicz (PTM) <ankry@mif.pg.gda.pl>, Robert Luberda
       <robert@debian.org> i Michał Kułach <michal.kulach@gmail.com>.

       Polskie  tłumaczenie jest częścią projektu manpages-pl; uwagi, pomoc, zgłaszanie błędów na
       stronie  http://sourceforge.net/projects/manpages-pl/.  Jest   zgodne   z   wersją    4.07
       oryginału.