Provided by: manpages-it-dev_4.21.0-2_all bug

NOME

       exit - causa un termine normale del processo

LIBRARY

       Standard C library (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.

STANDARDS

       POSIX.1-2001, POSIX.1-2008, C99, 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 è scar‐
          tato e il processo figlio muore immediatamente.

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

       •  Altrimenti, il processo figlio diviene un processo "zombie": la maggior parte delle risorse di proces‐
          so vengono riciclate, ma uno slot contenente informazioni minimali sul processo figlio (stato  di  in‐
          terruzione,  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  in‐
          terruzione 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 con‐
       trollo della sessione, allora a ciascun processo nel gruppo dei processi in primo piano di questo  termi‐
       nale di controllo viene mandato un segnale SIGHUP, e il terminale è disassociato da questa sessione, per‐
       mettendone 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  se‐
       gnale 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> e Marco Curreli <marcocurreli@tiscali.it>

       Questa  traduzione è documentazione libera; leggere la GNU General Public License Versione 3 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.

Linux man-pages 6.03                             5 febbraio 2023                                         exit(3)