atexit

更新 : 2007 年 11 月

指定された関数を終了時に処理します。

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

パラメータ

  • func
    呼び出される関数。

戻り値

正常終了の場合、atexit は 0 を返します。エラーが発生した場合は、0 以外の値を返します。

解説

atexit 関数には、プログラムの正常終了時に呼び出す関数 (func) のアドレスが渡されます。atexit への呼び出しが連続した場合は、関数のレジスタが作成されます。これらの関数は、後入れ先出し (LIFO: last-in, first-out) の順で実行されます。atexit へ渡された関数は、パラメータを取ることができません。atexit および _onexit は、ヒープを使用して関数のレジスタを保持します。このため、レジスタに登録できる関数の数は、ヒープ メモリによってだけ制限されます。

atexit 関数には、atexit 関数が呼び出されたときにアンロードされている可能性がある DLL に依存するコードを含めることはできません。

ANSI 準拠のアプリケーションを生成するには、類似の _onexit 関数ではなく、ANSI 標準の atexit 関数を使用します。

必要条件

ルーチン

必須ヘッダー

atexit

<stdlib.h>

使用例

次のプログラムでは、atexit を呼び出したときに実行される 4 つの関数をスタックにプッシュします。プログラムが終了すると、これらの関数が後入れ先出しベースで実行されます。

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

.NET Framework の相当するアイテム

System::Diagnostics::Process::Exited

参照

参照

プロセス制御と環境制御

abort

exit、_exit

_onexit、_onexit_m