Provided by: manpages-pl-dev_4.13-4_all 

NAZWA
exit - powoduje normalne zakończenie programu
SKŁADNIA
#include <stdlib.h>
void exit(int status);
OPIS
The exit() function causes normal process termination and the least significant byte of status (i.e.,
status & 0xFF) is returned to the parent (see 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).
┌───────────┬────────────────────────┬─────────────────────┐
│ Interfejs │ Atrybut │ Wartość │
├───────────┼────────────────────────┼─────────────────────┤
│ 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 zachowanie, gdy 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 has attempted to standardize exit codes (which some C libraries such as the GNU C library have also
adopted); see the file <sysexits.h>.
After exit(), the exit status must be transmitted to the parent process. There are three cases:
• If the parent has set SA_NOCLDWAIT, or has set the SIGCHLD handler to SIG_IGN, the status is discarded
and the child dies immediately.
• If the parent was waiting on the child, it is notified of the exit status and the child dies
immediately.
• Otherwise, the child becomes a "zombie" process: most of the process resources are recycled, but a
slot containing minimal information about the child process (termination status, resource usage
statistics) is retained in process table. This allows the parent to subsequently use waitpid(2) (or
similar) to learn the termination status of the child; at that point the zombie process slot is
released.
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.
Signals sent to other processes
Jeśli proces wychodzący 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).
Except in the above cases, where the signalled processes may be children of the terminating process,
termination of a process does not in general cause a signal to be sent to children of that process.
However, a process can use the prctl(2) PR_SET_PDEATHSIG operation to arrange that it receives a signal
if its parent terminates.
ZOBACZ TAKŻE
_exit(2), get_robust_list(2), setpgid(2), wait(2), atexit(3), on_exit(3), tmpfile(3)
O STRONIE
Angielska wersja tej strony pochodzi z wydania 5.10 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 są: Adam Byrtek <alpha@irc.pl>, Andrzej
Krzysztofowicz <ankry@green.mf.pg.gda.pl>, Robert Luberda <robert@debian.org> i Michał Kułach
<michal.kulach@gmail.com>
Niniejsze tłumaczenie jest wolną dokumentacją. Bliższe informacje o warunkach licencji można uzyskać
zapoznając się z GNU General Public License w wersji 3 lub nowszej. Nie przyjmuje się ŻADNEJ
ODPOWIEDZIALNOŚCI.
Błędy w tłumaczeniu strony podręcznika prosimy zgłaszać na adres listy dyskusyjnej manpages-pl-
list@lists.sourceforge.net.
Linux 9 lutego 2020 r. EXIT(3)