_exit(2) System Calls Manual _exit(2) NAZWA _exit, _Exit - konczy biezacy proces BIBLIOTEKA Standardowa biblioteka C (libc, -lc) SKLADNIA #include [[noreturn]] void _exit(int status); #include [[noreturn]] void _Exit(int status); Wymagane ustawienia makr biblioteki glibc (patrz feature_test_macros(7)): _Exit(): _ISOC99_SOURCE || _POSIX_C_SOURCE >= 200112L OPIS Funkcja _exit() "natychmiast" konczy proces, z ktorego zostala wywolana. Wszystkie przynalezace do procesu otwarte deskryptory plikow sa zamykane; wszystkie jego procesy potomne sa przejmowane przez init (lub przez najblizszy proces dorzynajacy (subreaper), zgodnie z definicja uzycia operacji PR_SET_CHILD_SUBREAPER prctl(2)). Jego proces macierzysty otrzymuje sygnal SIGCHLD. Wartosc status & 0xFF jest zwracana procesowi macierzystemu jako kod zakonczenia procesu wywolujacego te funkcje i moze zostac odczytana przez proces macierzysty za pomoca jednej z funkcji z rodziny wait(2). Funkcja _Exit() jest rownowazna _exit(). WARTOSC ZWRACANA Funkcje te nigdy nie powracaja. STANDARDY _exit() POSIX.1-2008. _Exit() C11, POSIX.1-2008. HISTORIA POSIX.1-2001, SVr4, 4.3BSD. _Exit() wprowadzono w C99. UWAGI Efekty zakonczenia, transmisja kodu zakonczenia, procesy zombie, przesylanie sygnalow itp. zostaly przedyskutowane w exit(3). Funkcja _exit() jest podobna do exit(3), ale nie wywoluje zadnych funkcji zarejestrowanych za pomoca funkcji atexit(3) lub on_exit(3). Otwarte strumienie stdio(3) nie sa oprozniane. Z drugiej strony, _exit nie zamyka otwartych deskryptorow plikow, co moze spowodowac nieoczekiwane opoznienia podczas oczekiwania na zakonczenie odlozonych zapisow. Jesli opoznienia te sa niepozadane, to moze byc przydatne wywolanie funkcji podobnych do tcflush(3) przed wywolaniem _exit(). To, czy jakiekolwiek odlozone wejscia/wyjscia zostana anulowane i ktore z nich moga zostac anulowane podczas _exit(), zalezy od implementacji. Roznice biblioteki C/jadra Powyzszy tekst w OPISIE dotyczy tradycyjnych skutkow _exit(), obejmujacych zakonczenie procesu oraz semantyke okreslona przez POSIX.1 i zaimplementowana przez opakowujaca funkcje biblioteczna C. We wspolczesnych systemach, oznacza to zakonczenie wszelkich watkow procesu. W odroznieniu od opakowujacej funkcji bibliotecznej C, surowe linuksowe wywolanie systemowe _exit() konczy jedynie wywolujacy watek, a dzialania obejmujace przypisanie nowego rodzica procesom potomnym lub wyslanie SIGCHLD do procesow macierzystych sa wykonywane wylacznie w sytuacji, gdy jest to ostatni watek z danej grupy watkow. Do glic 2.3, funkcja opakowujaca _exit() przywolywala wywolanie systemowe o tej samej nazwie. Od glibc 2.3, funkcja opakowujaca wywoluje exit_group(2), w celu zakonczenia wszystkich watkow w procesie. ZOBACZ TAKZE execve(2), exit_group(2), fork(2), kill(2), wait(2), wait4(2), waitpid(2), atexit(3), exit(3), on_exit(3), termios(3) TLUMACZENIE Autorami polskiego tlumaczenia niniejszej strony podrecznika sa: Przemek Borys , Andrzej Krzysztofowicz 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(2)