Provided by: manpages-pl-dev_20060617-1_all bug

NAZWA

       exit - normalne zakończenie programu

SKŁADNIA

       #include <stdlib.h>

       void exit(int status);

OPIS

       Funkcja  exit()  powoduje  normalne  zakończenie  programu  i zwraca do
       procesu  macierzystego  wartość  status  &  0377.    (patrz   wait(2)).
       Wszystkie  funkcje  zarejestrowane za pomocą atexit() oraz on_exit() są
       wykonywane  w  kolejności  odwrotnej  niż  zostały  zarejestrowane,   a
       wszystkie  otwarte  strumienie są zamykane i wypróżniane są ich bufory.
       Pliki utworzone za pomocą tmpfile() 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 nie.

WARTOŚĆ ZWRACANA

       Funkcja exit() nie powraca.

ZGODNE Z

       SVID 3, POSIX, BSD 4.3, ISO 9899 (``ANSI C'')

NOTES

       Za pomocą atexit() i on_exit() można zarejestrować  dodatkowe  funkcje,
       które  zostaną  wywołane  podczas  zakończenia.   Usuwana  z szeregu, a
       następnie  wywoływana,  jest  zawsze  ostatnia   funkcja.    Nie   jest
       zdefiniowane,  co się stanie, jeżeli podczas przetwarzania tych funkcji
       zostanie wywołane exit() lub longjmp().

       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  -  obejrzyj  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().

       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 starują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  peocesu  powoduje  osierocenie  grupy  procesów,  a
       którykolwiek z członków nowoosieroconej grupy procesów jest zatrzymany,
       to po sygnale SIGHUP do każdego z procesów tej grupy procesów  zostanie
       wysłany sygnał SIGCONT.

ZOBACZ TAKŻE

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

                                  2001-11-17                           EXIT(3)