exit(3) Library Functions Manual exit(3) NAZWA exit - powoduje normalne zakonczenie programu BIBLIOTEKA Standardowa biblioteka C (libc, -lc) SKLADNIA #include [[noreturn]] 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) sa wywolywane w kolejnosci odwrotnej do kolejnosci ich rejestracji. (Mozliwe jest, aby ktorakolwiek z tych funkcji uzyla atexit(3) lub on_exit(3), aby zarejestrowac dodatkowe funkcje wykonywane podczas konczenia dzialania procesu; nowe funkcje sa dodawane na poczatek listy funkcji przeznaczonych do wywolania). Jesli jedna z tych funkcji nie powroci (to jest wywola _exit(2) lub sie zabije za pomoca sygnalu), to zadna z pozostalych funkcji nie bedzie wywolana i dalsze przetwarzanie (w szczegolnosci oproznianie strumieni stdio(3)) jest przerywane. Jesli ta sama funkcja zostanie zarejestrowana za pomoca atexit(3) lub on_exit(3) wiecej niz raz, to bedzie wywolana tyle razy, ile razy byla zarejestrowana. Wszystkie otwarte strumienie stdio(3) sa oprozniane i zamykane. Pliki utworzone przez tmpfile(3) sa usuwane. Standard C wymienia dwie definicje EXIT_SUCCESS i EXIT_FAILURE, ktore moga zostac przekazane do exit(), aby wskazac, odpowiednio, czy zakonczenie bylo pomyslne, czy tez nie. WARTOSC ZWRACANA Funkcja exit() nie powraca. ATRYBUTY Informacje o pojeciach uzywanych w tym rozdziale mozna znalezc w podreczniku attributes(7). +---------------------+--------------------------+---------------------+ |Interfejs | Atrybut | Wartosc | +---------------------+--------------------------+---------------------+ |exit() | Bezpieczenstwo watkowe | MT-Unsafe race:exit | +---------------------+--------------------------+---------------------+ Funkcja exit() uzywa niezabezpieczonej zmiennej globalnej, w zwiazku z czym nie jest watkowo bezpieczna. STANDARDY C11, POSIX.1-2008. HISTORIA C89, POSIX.1-2001, SVr4, 4.3BSD. UWAGI Nie jest zdefiniowane zachowanie, gdy jedna z funkcji zarejestrowanych przez atexit(3) i on_exit(3) wywola exit() lub longjmp(3). Prosze zauwazyc, ze wywolanie execve(2) usuwa rejestracje utworzone przez atexit(3) i on_exit(3). Uzywanie EXIT_SUCCESS i EXIT_FAILURE zamiast 0 i pewnej wartosci niezerowej, jak 1 lub -1, zapewnia nieco lepsza przenosnosc (do srodowisk nieuniksowych). W szczegolnosci VMS uzywa 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 . After exit(), the exit status must be transmitted to the parent process. There are three cases: o 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. o If the parent was waiting on the child, it is notified of the exit status and the child dies immediately. o 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. Jesli implementacja wspiera sygnal SIGCHLD, to zostanie on wyslany do procesu macierzystego. Jesli proces macierzysty ustawil SA_NOCLDWAIT, to nie jest zdefiniowane, czy sygnal SIGCHLD zostanie wyslany. Signals sent to other processes Jesli proces wychodzacy jest inicjatorem sesji a sterujacy nim terminal jest terminalem sterujacym dla sesji, to do kazdego z procesow nalezacych do grupy procesow pierwszoplanowych tego terminala sterujacego, zostanie wyslany sygnal SIGHUP, a terminal zostanie odlaczony od sesji umozliwiajac jego przejecie przez nowy proces sterujacy. Jesli zakonczenie procesu powoduje osierocenie grupy procesow, a ktorykolwiek z czlonkow nowo osieroconej grupy procesow jest zatrzymany, to po sygnale SIGHUP do kazdego z procesow tej grupy procesow zostanie wyslany sygnal SIGCONT. Opis osieroconych grup procesow mozna znalezc w podreczniku 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 TAKZE _exit(2), get_robust_list(2), setpgid(2), wait(2), atexit(3), on_exit(3), tmpfile(3) TLUMACZENIE Autorami polskiego tlumaczenia niniejszej strony podrecznika sa: Adam Byrtek , Andrzej Krzysztofowicz , Robert Luberda i Michal Kulach Niniejsze tlumaczenie jest wolna dokumentacja. Blizsze informacje o warunkach licencji mozna uzyskac zapoznajac sie z GNU General Public License w wersji 3 lub nowszej. Nie przyjmuje sie ZADNEJ ODPOWIEDZIALNOSCI. Bledy w tlumaczeniu strony podrecznika prosimy zglaszac na adres listy dyskusyjnej . Linux man-pages 6.06 31 pazdziernika 2023 r. exit(3)