Provided by: manpages-pl-dev_0.6-2_all 

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
Wielowątkowość (patrz pthreads(7)) Funkcja exit() używa niezabezpieczonej zmiennej globalnej, w związku z czym nie jest wątkowo bezpieczna.
ZGODNE Z
SVr4, 4.3BSD, POSIX.1-2001, C89, C99.
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 3.71 projektu Linux man-pages. Opis projektu, informacje
dotyczące zgłaszania błędów, oraz najnowszą wersję oryginału można znaleźć pod adresem
http://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ą 3.71 oryginału.
Linux 2014-03-25 EXIT(3)