atexit
From cppreference.com
| ヘッダー <stdlib.h> で定義 |
||
| int atexit( void (*func)(void) ); |
||
funcが指す関数を、通常のプログラム終了時(exit()による終了、またはmain()からの復帰)に呼び出されるように登録します。関数は登録された逆順で呼び出されます。つまり、最後に登録された関数が最初に実行されます。
同じ関数を複数回登録することも可能です。
実装は、少なくとも32個の関数登録をサポートすることが保証されています。正確な上限は実装定義です。
目次 |
[編集] パラメータ
| func | - | 通常のプログラム終了時に呼び出される関数へのポインタ |
[編集] 戻り値
登録が成功した場合は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 The atexit function (p: 255)
- C11標準 (ISO/IEC 9899:2011)
- 7.22.4.2 The atexit function (p: 350)
- C99標準 (ISO/IEC 9899:1999)
- 7.20.4.2 The atexit function (p: 315)
- C89/C90標準 (ISO/IEC 9899:1990)
- 7.10.4.2 The atexit function (p: 156)
[編集] 関連項目
| (C11) |
quick_exit の呼び出し時に呼ばれる関数を登録する (関数) |
| C++ ドキュメント for atexit
| |