Provided by: manpages-it_2.80-5_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)

giugno                                                 12                                                EXIT(3)