.\" -*- coding: UTF-8 -*-
'\" t
.\" Copyright (C) 2001 Andries Brouwer <aeb@cwi.nl>.
.\"
.\" SPDX-License-Identifier: Linux-man-pages-copyleft
.\"
.\" FIXME . There are a lot of other process termination actions that
.\" could be listed on this page. See, for example, the list in the
.\" POSIX exit(3p) page.
.\"
.\"*******************************************************************
.\"
.\" This file was generated with po4a. Translate the source file.
.\"
.\"*******************************************************************
.TH exit 3 "2 maja 2024 r." "Linux man\-pages 6.9.1" 
.SH NAZWA
exit \- powoduje normalne zakończenie programu
.SH BIBLIOTEKA
Standardowa biblioteka C (\fIlibc\fP, \fI\-lc\fP)
.SH SKŁADNIA
.nf
\fB#include <stdlib.h>\fP
.P
\fB[[noreturn]] void exit(int \fP\fIstatus\fP\fB);\fP
.fi
.SH OPIS
Funkcja \fBexit\fP() powoduje normalne zakończenie procesu i zwrócenie najmniej
znaczącego bajtu \fIstatusu\fP \fIstatus & 0xFF\fP) procesowi macierzystemu
(zob. \fBwait\fP(2)).
.P
Wszystkie funkcje zarejestrowane przez  \fBatexit\fP(3) i \fBon_exit\fP(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  \fBatexit\fP(3) lub \fBon_exit\fP(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
\fB_exit\fP(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 \fBstdio\fP(3)) jest przerywane. Jeśli ta sama funkcja
zostanie  zarejestrowana za pomocą \fBatexit\fP(3) lub \fBon_exit\fP(3) więcej niż
raz, to będzie wywołana tyle razy, ile razy była zarejestrowana.
.P
Wszystkie otwarte strumienie \fBstdio\fP(3) są opróżniane i zamykane. Pliki
utworzone przez \fBtmpfile\fP(3) są usuwane.
.P
Standard C wymienia dwie definicje \fBEXIT_SUCCESS\fP i \fBEXIT_FAILURE\fP, które
mogą zostać przekazane do \fBexit\fP(), aby wskazać, odpowiednio, czy
zakończenie było pomyślne, czy też nie.
.SH "WARTOŚĆ ZWRACANA"
Funkcja \fBexit\fP() nie powraca.
.SH ATRYBUTY
Informacje o pojęciach używanych w tym rozdziale można znaleźć w podręczniku
\fBattributes\fP(7).
.TS
allbox;
lbx lb lb
l l l.
Interfejs	Atrybut	Wartość
T{
.na
.nh
\fBexit\fP()
T}	Bezpieczeństwo wątkowe	MT\-niebezpieczne race:exit
.TE
.P
Funkcja \fBexit\fP() używa niezabezpieczonej zmiennej globalnej, w związku z
czym nie jest wątkowo bezpieczna.
.SH STANDARDY
C11, POSIX.1\-2008.
.SH HISTORIA
C89, POSIX.1\-2001, SVr4, 4.3BSD.
.SH UWAGI
Nie jest zdefiniowane zachowanie, gdy jedna z funkcji zarejestrowanych przez
\fBatexit\fP(3) i \fBon_exit\fP(3) wywoła \fBexit\fP() lub \fBlongjmp\fP(3). Proszę
zauważyć, że wywołanie \fBexecve\fP(2) usuwa rejestracje utworzone przez
\fBatexit\fP(3) i \fBon_exit\fP(3).
.P
Używanie \fBEXIT_SUCCESS\fP i \fBEXIT_FAILURE\fP 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.
.P
BSD próbował zestandaryzować kody zakończenia (co przyjęły niektóre
biblioteki C, w  tym także biblioteka GNU C); patrz plik
\fI<sysexits.h>\fP.
.P
Po wykonaniu \fBexit\fP(), status zakończenia musi być przetransmitowany do
procesu macierzystego. Występują trzy przypadki:
.IP \[bu] 3
Jeśli proces macierzysty ma ustawione \fBSA_NOCLDWAIT\fP lub ma ustawioną
procedurę obsługi \fBSIGCHLD\fP na \fBSIG_IGN\fP, to status jest odrzucany, a
potomek natychmiast ginie.
.IP \[bu]
Jeśli proces macierzysty oczekiwał na potomka, jest on informowany o
statusie zakończenia, a potomek natychmiast ginie.
.IP \[bu]
W innych sytuacjach, potomek staje się procesem \[Bq]zombie\[rq]: większość
zasobów procesu jest odzyskiwana, jednak wpis zawierający minimalną dawkę
informacji o procesie potomnym (status zakończenia, statystyki użycia
zasobów) jest zachowywany w tablicy procesów. Pozwala to procesowi
macierzystemu na późniejsze użycie \fBwaitpid\fP(2) (lub podobnego), aby poznać
status zakończenia potomka; w tym momencie wpis procesu zombie jest
zwalniany.
.P
.\"
Jeśli implementacja obsługuje sygnał \fBSIGCHLD\fP, to zostanie on wysłany do
procesu macierzystego. Jeśli proces macierzysty ustawił \fBSA_NOCLDWAIT\fP, to
nie jest zdefiniowane, czy sygnał \fBSIGCHLD\fP zostanie wysłany.
.SS "Sygnały wysyłane do innych procesów"
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ł \fBSIGHUP\fP, a terminal zostanie odłączony od sesji
umożliwiając jego przejęcie przez nowy proces sterujący.
.P
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 \fBSIGHUP\fP do każdego z procesów tej grupy procesów zostanie
wysłany sygnał \fBSIGCONT\fP. Opis osieroconych grup procesów można znaleźć w
podręczniku \fBsetpgid\fP(2).
.P
Za wyjątkiem przypadków opisanych powyżej, gdy sygnalizowane procesy mogą
być potomkami procesu kończonego, zakończenie procesu zwykle \fInie\fP powoduje
wysłania sygnału do potomków tego procesu. Jednakże proces może skorzystać z
operacji \fBPR_SET_PDEATHSIG\fP \fBprctl\fP(2), aby spowodować otrzymanie sygnału,
gdy jego rodzic zakończy się.
.SH "ZOBACZ TAKŻE"
\fB_exit\fP(2), \fBget_robust_list\fP(2), \fBsetpgid\fP(2), \fBwait\fP(2), \fBatexit\fP(3),
\fBon_exit\fP(3), \fBtmpfile\fP(3)
.PP
.SH TŁUMACZENIE
Tłumaczenie niniejszej strony podręcznika:
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>
.
.PP
Niniejsze tłumaczenie jest wolną dokumentacją. Bliższe informacje o warunkach
licencji można uzyskać zapoznając się z
.UR https://www.gnu.org/licenses/gpl-3.0.html
GNU General Public License w wersji 3
.UE
lub nowszej. Nie przyjmuje się ŻADNEJ ODPOWIEDZIALNOŚCI.
.PP
Błędy w tłumaczeniu strony podręcznika prosimy zgłaszać na adres listy
dyskusyjnej
.MT manpages-pl-list@lists.sourceforge.net
.ME .
