exit, _exit
Termina il processo chiamante—exit lo termina in modo pulito; _exit termina immediatamente.
Nota
Non utilizzare questo metodo per interrompere un'applicazione Windows Store, eccetto che negli scenari di test o di debug.Le modalità da interfaccia utente o da codice per chiudere un'app Windows Store non sono consentite come descritto nella Section 3.6 dei Requisiti di certificazione delle app di Windows 8.Per ulteriori informazioni, vedere Ciclo di vita delle applicazioni (app di Windows Store).
void exit(
int status
);
void _exit(
int status
);
Parametri
- status
Stato di uscita.
Note
Le funzioni _exit e exit terminano il processo chiamante. exit chiama —con ordine last-in-first-out (LIFO)—le funzioni registrate da atexit e _onexit, quindi svuota tutti i buffer dei file prima di terminare il processo. _exit termina il processo senza eseguire atexit e _onexit e senza svuotare i buffer. In genere, il valore status è impostato su 0 per indicare un'uscita normale o viene impostato su un altro valore per indicare un errore.
Sebbene le chiamate a _exit e a exit non restituiscono un valore, il byte meno significativo di status viene reso disponibile al processo chiamante in attesa, se esiste, dopo l'uscita del processo chiamante. Il valore status è disponibile al sistema operativo usando il comando batch ERRORLEVEL ed è rappresentato da una di due costanti: EXIT_SUCCESS, rappresentato dal valore 0, o EXIT_FAILURE, rappresentato dal valore 1. exit, _exit, _cexit e _c_exit si comportano come segue.
Funzione |
Descrizione |
---|---|
exit |
Esegue le procedure complete di terminazione della libreria di C, termina il processo e terminata con il codice di stato fornito. |
_exit |
Esegue le procedure veloci di terminazione della libreria di C, termina il processo e terminata con il codice di stato fornito. |
_cexit |
Esegue le procedure complete di terminazione della libreria di C e ritorna al chiamante, ma non termina il processo. |
_c_exit |
Esegue le procedure veloci di terminazione della libreria di C e ritorna al chiamante, ma non termina il processo. |
Quando si chiama la funzione _exit o exit, i distruttori per gli oggetti temporanei o automatici presenti al momento della chiamata non vengono chiamati. Un oggetto automatico è definito in una funzione in cui l'oggetto non è dichiarato come statico. Un oggetto temporaneo è un oggetto creato dal compilatore. Per eliminare un oggetto automatico prima di chiamare exit o _exit, chiamare in modo esplicito il distruttore dell'oggetto, come segue:
myObject.myClass::~myClass();
Non utilizzare DLL_PROCESS_ATTACH per chiamare exit da DllMain. Se si desidera terminare la funzione DLLMain, restituire FALSE da DLL_PROCESS_ATTACH.
Requisiti
Funzione |
Intestazione obbligatoria |
---|---|
exit |
<process.h> o <stdlib.h> |
_exit |
<process.h> o <stdlib.h> |
Per ulteriori informazioni sulla compatibilità, vedere Compatibilità.
Esempio
// crt_exit.c
// This program returns an exit code of 1. The
// error code could be tested in a batch file.
#include <stdlib.h>
int main( void )
{
exit( 1 );
}
Equivalente .NET Framework
System::Diagnostics::Process::Kill