Provided by: manpages-it_3.73-2_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))  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.

ATTRIBUTI

   Multithreading (vedi pthreads(7))
       La funzione exit() usa una variabile globale che non è protetta, per  cui  non  è  thread-
       safe.

CONFORME A

       SVr4, 4.3BSD, POSIX.1-2001, C89, C99.

NOTE

       Non è definito cosa succede se una delle funzioni registrate usando atexit(3) e on_exit(3)
       chiama  exit()  o  longjmp(3).   Da  notare  che  una  chiamata  a  execve(2)  rimuove  le
       registrazioni create con atexit(3) e on_exit(3).

       L'uso di EXIT_SUCCESS e EXIT_FAILURE è leggermente più portabile (verso ambienti non-Unix)
       dell'uso di 0 e di qualche valore diverso da 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  SA_NOCLDWAIT,  o  ha  impostato  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 impostato 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.  Si
       veda setpgid(2) per una spiegazione dei gruppi di processi orfani.

VEDERE ANCHE

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

COLOPHON

       Questa pagina fa parte del rilascio 3.73 del progetto Linux  man-pages.   Una  descrizione
       del  progetto,  le  istruzioni  per  la  segnalazione degli errori, e l'ultima versione di
       questa pagina si trova su http://www.kernel.org/doc/man-pages/.

       La versione italiana fa parte del pacchetto man-pages-it v. 3.73, a cura di: ILDP "Italian
       Linux Documentation Project" http://www.pluto.it/ildp
       Per     la     traduzione     in     italiano     si     può     fare     riferimento    a
       http://www.pluto.it/ildp/collaborare/
       Segnalare eventuali errori di traduzione a ildp@pluto.it