Namespaces
Variants

atexit

From cppreference.net
ヘッダーで定義 <stdlib.h>
int atexit ( void ( * func ) ( void ) ) ;

func が指す関数を、通常のプログラム終了時( exit() の呼び出し、または main() からの戻り)に呼び出されるよう登録します。登録された関数は、登録された順序と逆の順序で呼び出されます。すなわち、最後に登録された関数が最初に実行されます。

同じ関数が複数回登録される場合があります。

実装は少なくとも 32 個の関数の登録をサポートすることが保証されています。正確な上限は実装定義です。

目次

パラメータ

func - 正常なプログラム終了時に呼び出される関数へのポインタ

戻り値

0 登録が成功した場合は0、それ以外の場合は0以外の値。

#include <stdlib.h>
#include <stdio.h>
void f1(void)
{
    puts("f1");
}
void f2(void)
{
    puts("f2");
}
int main(void)
{
    if ( ! atexit(f1) && ! atexit(f2) && ! atexit(f2) )
        return EXIT_SUCCESS ;
    // atexit registration failed
    return EXIT_FAILURE ;
}   // <- if registration was successful calls f2, f2, f1

出力:

f2
f2
f1

参考文献

  • C17規格 (ISO/IEC 9899:2018):
  • 7.22.4.2 atexit関数 (p: 255)
  • C11規格 (ISO/IEC 9899:2011):
  • 7.22.4.2 atexit関数 (p: 350)
  • C99規格 (ISO/IEC 9899:1999):
  • 7.20.4.2 atexit関数 (p: 315)
  • C89/C90標準 (ISO/IEC 9899:1990):
  • 7.10.4.2 atexit関数 (p: 156)

関連項目

quick_exit 呼び出し時に実行される関数を登録する
(関数)