atexit

Elabora la funzione specificata in uscita.

Sintassi

int atexit(
   void (__cdecl *func )( void )
);

Parametri

func
Funzione da chiamare.

Valore restituito

atexit restituisce 0 se l'esito è positivo o un valore diverso da zero se si verifica un errore.

Osservazioni:

La atexit funzione ottiene l'indirizzo di una funzione func da chiamare quando il programma termina normalmente. Chiamate successive per atexit creare un registro di funzioni che vengono eseguite in ordine LIFO (First-In First Out). Le funzioni passate a non possono accettare atexit parametri. atexit e _onexit usano l'heap per mantenere il registro di funzioni. Di conseguenza, il numero di funzioni che è possibile registrare è limitato solo dalla memoria heap.

Il codice nella atexit funzione non deve contenere alcuna dipendenza da qualsiasi DLL che potrebbe essere già scaricata quando viene chiamata la atexit funzione.

Microsoft comportamento specifico della DLL: quando una DLL viene scaricata, dopo DllMain aver ricevuto DLL_PROCESS_DETACH, i callback della atexit DLL vengono eseguiti in ordine di registrazione inversa, con l'ultimo callback registrato per primo.

Per generare un'applicazione conforme a ANSI, usare la funzione ANSI-standard atexit (anziché la funzione simile _onexit ).

Requisiti

Ciclo Intestazione obbligatoria
atexit <stdlib.h>

Esempio

Questo programma inserisce quattro funzioni nello stack di funzioni da eseguire quando atexit viene chiamato. Quando il programma viene chiuso, esegue queste funzioni nell'ordine last-in first-out.

// crt_atexit.c
#include <stdlib.h>
#include <stdio.h>

void fn1( void ), fn2( void ), fn3( void ), fn4( void );

int main( void )
{
   atexit( fn1 );
   atexit( fn2 );
   atexit( fn3 );
   atexit( fn4 );
   printf( "This is executed first.\n" );
}

void fn1()
{
   printf( "next.\n" );
}

void fn2()
{
   printf( "executed " );
}

void fn3()
{
   printf( "is " );
}

void fn4()
{
   printf( "This " );
}
This is executed first.
This is executed next.

Vedi anche

Processo e controllo dell'ambiente
abort
exit, _Exit, _exit
_onexit, _onexit_m