plucky (3) exit.3.gz

Provided by: manpages-it-dev_4.25.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⟩.