atexit

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

Sintaxe

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

Parâmetros

func
Função a ser chamada.

Retornar valor

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

Comentários

A função atexit é passada para o endereço de uma função func a ser chamada quando o programa terminar normalmente. Chamadas sucessivas para atexit criam um registro das funções que são executadas na ordem UEPS (último a entrar, primeiro a sair). 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. Assim, o número de funções que podem ser registradas é limitado apenas pela memória de heap.

O código na função atexit não deve conter nenhuma dependência de nenhuma DLL que possa já ter sido descarregada quando a função atexit for chamada.

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

Esse programa envia quatro funções para a pilha de funções a serem executadas quando atexit é chamado. Quando o programa é encerrado, esses programas são executados no esquema ú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.

Confira também

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