atexit

於結束時處理指定的函式。

語法

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

參數

func
即將呼叫的函式。

傳回值

若成功,則 atexit 傳回 0;若發生錯誤,則為非零值。

備註

atexit 式會在程式正常終止時傳遞要呼叫之函式的 func 位址。 後續呼叫 atexit 會建立依後進先出 (LIFO) 順序執行的函式的暫存器。 傳遞至 atexit 的函式無法接受參數。 atexit_onexit 使用堆積保存函式暫存器。 因此,可以登錄的函式數目僅受限於堆積記憶體。

函式中的 atexit 程式碼不應該包含呼叫函式時 atexit 可能已經卸載之任何 DLL 的任何相依性。

若要產生符合 ANSI 標準的應用程式,請使用 ANSI 標準 atexit 函式(而不是類似的 _onexit 函式)。

需求

常式 必要的標頭
atexit <stdlib.h>

範例

此程式會在呼叫 atexit 時將四個函式推入要執行的函式堆疊。 當程式結束時,這些程式會依後進先出的基礎執行。

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

另請參閱

進程和環境控制
abort
exit, _Exit, _exit
_onexit, _onexit_m