atexit

Processa a função especificada na saída.

Sintaxe

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

Parâmetros

func
Função a ser chamada.

Valor retornado

atexit retorna 0 se for bem-sucedido ou um valor diferente de zero se ocorrer um erro.

Comentários

A atexit função obtém o endereço de uma função func a ser chamada quando o programa é encerrado normalmente. Chamadas sucessivas para atexit criar um registro de funções que são executadas na ordem LIFO (última entrada e saída). As funções passadas para atexit não podem receber parâmetros. atexit e _onexit usam o heap para conter o registro das funções. Portanto, o número de funções que você pode registrar é limitado apenas pela memória de heap.

O código na atexit função não deve conter nenhuma dependência em qualquer DLL que já possa ser descarregada quando a atexit função é chamada.

Microsoft comportamento de DLL específico: quando uma DLL descarrega, após DllMain receberDLL_PROCESS_DETACH, os retornos de chamada da atexit DLL são executados em ordem de registro reverso, com o último retorno de chamada registrado em execução primeiro.

Para gerar um aplicativo em conformidade com o ANSI, use a função atexit do padrão ANSI (em vez da função _onexit semelhante).

Requisitos

Rotina Cabeçalho necessário
atexit <stdlib.h>

Exemplo

Este programa envia quatro funções por push para a pilha de funções a serem executadas quando atexit é chamado. Quando o programa é encerrado, ele executa essas funções na ordem de última entrada e saída.

// 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.

Confira também

Controle de processo e ambiente
abort
exit, , _Exit_exit
_onexit, _onexit_m