oracular (2) exit.2.gz

Provided by: manpages-pl-dev_4.23.1-1_all bug

NAZWA

       _exit, _Exit - kończy bieżący proces

BIBLIOTEKA

       Standardowa biblioteka C (libc, -lc)

SKŁADNIA

       #include <unistd.h>

       [[noreturn]] void _exit(int status);

       #include <stdlib.h>

       [[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"  kończy  proces,  z  którego  została wywołana. Wszystkie przynależące do
       procesu otwarte deskryptory plików są zamykane; wszystkie jego procesy potomne są przejmowane przez  init
       (lub   przez   najbliższy   proces   dorzynający   (subreaper),   zgodnie  z  definicją  użycia  operacji
       PR_SET_CHILD_SUBREAPER prctl(2)). Jego proces macierzysty otrzymuje sygnał SIGCHLD.

       Wartość status & 0xFF jest zwracana procesowi macierzystemu jako kod zakończenia procesu wywołującego  tę
       funkcję i może zostać odczytana przez proces macierzysty za pomocą jednej z funkcji z rodziny wait(2).

       Funkcja _Exit() jest równoważna _exit().

WARTOŚĆ ZWRACANA

       Funkcje te nigdy nie powracają.

STANDARDY

       _exit()
              POSIX.1-2008.

       _Exit()
              C11, POSIX.1-2008.

HISTORIA

       POSIX.1-2001, SVr4, 4.3BSD.

       _Exit() wprowadzono w C99.

UWAGI

       Efekty  zakończenia,  transmisja  kodu  zakończenia,  procesy  zombie,  przesyłanie sygnałów itp. zostały
       przedyskutowane w exit(3).

       Funkcja _exit() jest podobna do exit(3), ale nie wywołuje  żadnych  funkcji  zarejestrowanych  za  pomocą
       funkcji  atexit(3) lub on_exit(3). Otwarte strumienie stdio(3) nie są opróżniane. Z drugiej strony, _exit
       nie zamyka otwartych deskryptorów plików, co może spowodować nieoczekiwane opóźnienia podczas oczekiwania
       na  zakończenie  odłożonych  zapisów. Jeśli opóźnienia te są niepożądane, to może być przydatne wywołanie
       funkcji podobnych do tcflush(3) przed wywołaniem _exit().  To, czy jakiekolwiek odłożone  wejścia/wyjścia
       zostaną anulowane i które z nich mogą zostać anulowane podczas _exit(), zależy od implementacji.

   Różnice biblioteki C/jądra
       Powyższy  tekst  w  OPISIE  dotyczy  tradycyjnych  skutków _exit(), obejmujących zakończenie procesu oraz
       semantykę określoną przez POSIX.1  i  zaimplementowaną  przez  opakowującą  funkcję  biblioteczną  C.  We
       współczesnych systemach, oznacza to zakończenie wszelkich wątków procesu.

       W  odróżnieniu  od  opakowującej  funkcji  bibliotecznej  C, surowe linuksowe wywołanie systemowe _exit()
       kończy jedynie wywołujący wątek, a działania obejmujące przypisanie nowego rodzica procesom potomnym  lub
       wysłanie  SIGCHLD do procesów macierzystych są wykonywane wyłącznie w sytuacji, gdy jest to ostatni wątek
       z danej grupy wątków.

       Do glic 2.3, funkcja opakowująca _exit() przywoływała wywołanie systemowe o tej samej  nazwie.  Od  glibc
       2.3, funkcja opakowująca wywołuje exit_group(2), w celu zakończenia wszystkich wątków w procesie.

ZOBACZ TAKŻE

       execve(2),   exit_group(2),   fork(2),   kill(2),  wait(2),  wait4(2),  waitpid(2),  atexit(3),  exit(3),
       on_exit(3), termios(3)

TŁUMACZENIE

       Autorami polskiego tłumaczenia niniejszej strony podręcznika  są:  Przemek  Borys  <pborys@dione.ids.pl>,
       Andrzej Krzysztofowicz <ankry@green.mf.pg.gda.pl> 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  ⟨https://www.gnu.org/licenses/gpl-3.0.html⟩  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⟩.