focal (3) exit.3.gz

Provided by: manpages-pl-dev_0.7-2_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.