Provided by:
manpages-pl-dev_20060617-1_all 
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)