Provided by: manpages-it-dev_4.23.1-1_all bug

NOME

       exit - causa la conclusione normale del processo

LIBRERIA

       Libreria C standard (libc, -lc)

SINTASSI

       #include <stdlib.h>

       [[noreturn]] void exit(int status);

DESCRIZIONE

       La funzione exit() provoca il termine normale dei processi e il byte meno significativo di
       status (i.e., status & 0xFF) è 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

       Per la spiegazione dei termini usati in questa sezione, vedere attributes(7).

       ┌───────────────────────────────────────────────────┬───────────────┬─────────────────────┐
       │InterfacciaAttributoValore              │
       ├───────────────────────────────────────────────────┼───────────────┼─────────────────────┤
       │exit()                                             │ Thread safety │ MT-Unsafe race:exit │
       └───────────────────────────────────────────────────┴───────────────┴─────────────────────┘
       La funzione exit() usa una variabile globale che non è protetta, quindi non è thread-safe.

CONFORME A

       C11, POSIX.1-2008.

STORIA

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

NOTE

       Il comportamento è  indefinito  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 (che anche alcune librerie C, come  la
       libreria GNU C, hanno adottato); 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 e il processo figlio muore immediatamente.

       •  Se  il  genitore  stava aspettando il processo figlio, gli viene notificato lo stato di
          uscita e il processo figlio muore immediatamente.

       •  Altrimenti, il processo figlio diviene un processo "zombie":  la  maggior  parte  delle
          risorse di processo vengono riciclate, ma uno slot contenente informazioni minimali sul
          processo figlio (stato di interruzione, statistiche sull'uso di risorse)  è  conservato
          nella  tabella  dei  processi.  Questo  consente  al genitore di usare susseguentemente
          waitpid(2) (o simile) per avere informazioni sullo stato di interruzione  del  processo
          figlio; a questo punto lo slot del processo zombie viene rilasciato.

       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.

   Segnali inviati ad altri processi
       Se il processo in uscita è 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.

       Al  di  fuori  dei  casi  di cui sopra, dove i processi segnalati possono essere figli del
       processo che viene interrotto, l'interruzione di  un  processo  generalmente  non  provoca
       l'invio  di  un  segnale  al  figlio  di  quel  processo.  Comunque, un processo può usare
       l'operazione prctl(2) PR_SET_PDEATHSIG per fare in modo che riceva un segnale  se  il  suo
       genitore termina.

VEDERE ANCHE

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

TRADUZIONE

       La  traduzione  italiana  di  questa  pagina  di  manuale è stata creata da Giulio Daprelà
       <giulio@pluto.it>, Elisabetta Galli <lab@kkk.it>, Marco Curreli  <marcocurreli@tiscali.it>
       e Giuseppe Sacco <eppesuig@debian.org>

       Questa  traduzione è documentazione libera; leggere la GNU General Public License Versione
       3 ⟨https://www.gnu.org/licenses/gpl-3.0.html⟩ o successiva per le condizioni di copyright.
       Non ci assumiamo alcuna responsabilità.

       Per  segnalare  errori nella traduzione di questa pagina di manuale inviare un messaggio a
       ⟨pluto-ildp@lists.pluto.it⟩.