EXIT

Section: 2007 (3)
Updated: 12
Index Return to Main Contents
 

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)


 

Index

NOME
SINTASSI
DESCRIZIONE
VALORE RESTITUITO
CONFORME A
NOTE
VEDERE ANCHE

This document was created by man2html, using the manual pages.
Time: 23:03:52 GMT, June 17, 2008