exit

Autres langues

Langue: pl

Autres versions - même langue

Version: 2001-11-17 (openSuse - 09/10/07)

Autres sections - même nom

Section: 3 (Bibliothèques de fonctions)

NAZWA

exit - normalne zakoñczenie programu

SK£ADNIA


#include <stdlib.h>



void exit(int status);

OPIS

Funkcja exit() powoduje normalne zakoñczenie programu i zwraca do procesu macierzystego warto¶æ status & 0377. (patrz wait(2)). Wszystkie funkcje zarejestrowane za pomoc± atexit() oraz on_exit() s± wykonywane w kolejno¶ci odwrotnej ni¿ zosta³y zarejestrowane, a wszystkie otwarte strumienie s± zamykane i wypró¿niane s± ich bufory. Pliki utworzone za pomoc± tmpfile() 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 nie.

WARTO¦Æ ZWRACANA

Funkcja exit() nie powraca.

ZGODNE Z

SVID 3, POSIX, BSD 4.3, ISO 9899 (``ANSI C'')

NOTES

Za pomoc± atexit() i on_exit() mo¿na zarejestrowaæ dodatkowe funkcje, które zostan± wywo³ane podczas zakoñczenia. Usuwana z szeregu, a nastêpnie wywo³ywana, jest zawsze ostatnia funkcja. Nie jest zdefiniowane, co siê stanie, je¿eli podczas przetwarzania tych funkcji zostanie wywo³ane exit() lub longjmp().

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 próbowa³ zestandaryzowaæ kody zakoñczenia - obejrzyj plik <sysexits.h>.

Po wywo³aniu exit(), kod zakoñczenia musi zostaæ przekazany do procesu macierzystego. Mo¿liwe s± trzy przypadki. Je¶li proces macierzysty ma ustawione SA_NOCLDWAIT lub ustawiony uchwyt SIGCHLD na SIG_IGN, to kod ten jest ignorowany. Je¶li proces macierzysty czeka³ na potomny, jest on powiadamiany o kodzie powrotu. W obu przypadkach koñcz±cy siê proces ginie natychmiast. Je¶li proces macierzysty nie poinformowa³, ¿e nie jest zainteresowany kodem zakoñczenia ani nie czeka, koñcz±cy siê proces przechodzi w proces "zombie" (który nie zawiera nic oprócz pojedynczego bajtu reprezentuj±cego kod zakoñczenia) tak, ¿e proces macierzysty mo¿e poznaæ kod powrotu poprzez pó¼niejsze wywo³anie jednej z funkcji wait().

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.

Je¶li proces jest inicjatorem sesji a steruj±cy nim terminal jest terminalem staruj±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 peocesu powoduje osierocenie grupy procesów, a którykolwiek z cz³onków nowoosieroconej grupy procesów jest zatrzymany, to po sygnale SIGHUP do ka¿dego z procesów tej grupy procesów zostanie wys³any sygna³ SIGCONT.

ZOBACZ TAK¯E

_exit(2), wait(2), atexit(3), on_exit(3), tmpfile(3)