atexit

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

Sintaxe

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

Parameters

func
Função a ser chamada.

Valor de retorno

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

Remarks

A atexit função recebe o endereço de uma função func a chamar quando o programa termina normalmente. Chamadas sucessivas para atexit criar um registo de funções que executam em ordem de último a entrar, primeiro a sair (LIFO). As funções passadas não atexit conseguem obter parâmetros. atexit e _onexit usar o heap para manter o registo de funções. Assim, o número de funções que pode registar é limitado apenas pela memória heap.

O código na atexit função não deve conter qualquer dependência de qualquer DLL que já possa ser descarregado quando a atexit função for chamada.

Comportamento específico das DLLs da Microsoft: Quando uma DLL é descarregada, após DllMain receber DLL_PROCESS_DETACH, os callbacks atexit da DLL executam-se por ordem inversa de registo, com o último callback registado a ser executado primeiro.

Para gerar uma aplicação compatível com ANSI, utilize a função padrão atexit ANSI (em vez da função semelhante _onexit ).

Requerimentos

Rotina Cabeçalho obrigatório
atexit <stdlib.h>

Exemplo

Este programa empurra quatro funções para a pilha de funções para executar quando atexit é chamado. Quando o programa sai, executa estas funções em ordem de último a entrar, primeiro a sair.

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

Consulte também

Controlo de processos e ambientes
abort
exit, _Exit, _exit
_onexit, _onexit_m