Provided by: manpages-it_2.80-3_all bug

NOME

       exit - causa un termine normale del processo

SINTASSI

       #include <stdlib.h>

       void exit(int status);

DESCRIZIONE

       La  funzione exit() provoca il termine normale dei processi e il valore di status & 0377 è
       restituito al genitore (vedere wait(2)).

       Tutte le funzioni registrate con atexit(3) e on_exit(3) sono chiamate, in  ordine  inverso
       rispetto alla loro registrazione.  (È possibile per una di queste funzioni usare atexit(3)
       o on_exit(3) per registrare una funzione aggiuntiva da eseguire  durante  il  processo  di
       uscita; la nuova registrazione è aggiunta all'inizio dell'elenco di funzioni che rimane da
       chiamare).  Se una  di  queste  funzioni  non  restituisce  niente  (per  esempio,  chiama
       _exit(2),  o  si  termina da sola mandandosi un segnale), non viene chiamata nessuna delle
       funzioni rimanenti, e la successiva uscita in elaborazione (in particolare, lo svuotamento
       degli  stream stdio(3) streams) viene abbandonata.  Se una funzione è stata registrata più
       volte  usando  atexit(3)  o  on_exit(3),  verrà  chiamata  tante  volte  quante  sono   le
       registrazioni.

       Tutti  gli  stream  stdio(3)  aperti sono svuotati e chiusi.  I file creati con tmpfile(3)
       sono rimossi.

       Il C standard specifica due costanti, EXIT_SUCCESS  e  EXIT_FAILURE,  che  possono  essere
       passate a exit() per indicare rispettivamente il successo o l'insuccesso di una chiusura.

VALORE RESTITUITO

       La funzione exit() non restituisce nulla.

CONFORME A

       SVr4, 4.3BSD, POSIX.1-2001.

NOTE

       Non è definito cosa succede se una delle funzioni registrate usando atexit(3) e on_exit(3)
       chiama exit() o longjmp(3).

       L'uso di EXIT_SUCCESS e EXIT_FAILURE è leggermente più portabile (verso ambienti non-Unix)
       di  0  e  qualche  valore  non-zero  come 1 o -1.  In particolare, VMS usa una convenzione
       differente.

       BSD ha tentato di standardizzare i codici di uscita; vedere il file <sysexits.h>.

       Dopo exit(), lo stato di uscita deve essere trasmesso al processo genitore.  Ci  sono  tre
       casi.   Se il genitore ha impostato l'handler SA_NOCLDWAIT, o l'handler SIGCHLD a SIG_IGN,
       lo stato è scartato.  Se il  genitore  stava  aspettando  il  processo  figlio  gli  viene
       notificato  lo  stato  di  uscita.   In  entrambi  i  casi  il  processo  in  uscita muore
       immediatamente.  Se il genitore non ha indicato che non gli interessa lo stato di  uscita,
       ma  non  è  in attesa, il processo in uscita diviene un processo "zombie" (che non è altro
       che un contenitore per il byte che rappresenta lo stato di uscita), così che  il  genitore
       possa apprendere lo stato di uscita quando in seguito chiama una delle funzioni wait(2)

       Se  l'implementazione  supporta  il segnale SIGCHLD, questo segnale è inviato al genitore.
       Se il genitore ha settato SA_NOCLDWAIT, non è definito se il segnale SIGCHLD è inviato.

       Se il processo è un leader di sessione e il suo terminale di controllo è il  terminale  di
       controllo della sessione, allora a ciascun processo nel gruppo dei processi in primo piano
       di questo terminale di controllo viene mandato un  segnale  SIGHUP  ,  e  il  terminale  è
       disassociato  da  questa  sessione,  permettendone  l'acquisizione  da  parte  di un nuovo
       processo controllante.

       Se l'uscita del processo fa sì che un gruppo di processo divenga orfano, e se un qualunque
       membro del nuovo gruppo del processo orfano viene fermato, allora verrà mandato un segnale
       SIGHUP seguito da un segnale SIGCONT a ciascun processo in questo gruppo di processo.

VEDERE ANCHE

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