at_quick_exit
From cppreference.com
| ヘッダー <stdlib.h> で定義 |
||
| int at_quick_exit( void (*func)(void) ); |
(C11 以降) | |
func が指す関数を、quick_exit によるプログラムの緊急終了時に呼び出されるように登録します。
複数のスレッドからこの関数を呼び出しても、データ競合は発生しません。実装は、少なくとも 32 個の関数の登録をサポートすることが保証されています。正確な制限は実装定義です。
登録された関数は、通常のプログラム終了時には呼び出されません。その場合に関数を呼び出す必要がある場合は、atexit を使用する必要があります。
目次 |
[編集] パラメータ
| func | - | プログラムの緊急終了時に呼び出される関数へのポインタ |
[編集] 戻り値
登録が成功した場合は 0、それ以外の場合はゼロ以外の値を返します。
[編集] 例
このコードを実行
#include <stdlib.h> #include <stdio.h> void f1(void) { puts("pushed first"); fflush(stdout); } void f2(void) { puts("pushed second"); } int main(void) { at_quick_exit(f1); at_quick_exit(f2); quick_exit(0); }
出力
pushed second pushed first
[編集] 参照
- C17標準 (ISO/IEC 9899:2018)
- 7.22.4.3 The at_quick_exit function (p: 255)
- C11標準 (ISO/IEC 9899:2011)
- 7.22.4.3 The at_quick_exit function (p: 351)
[編集] 関連項目
| (クリーンアップせずに)異常なプログラム終了を引き起こす (関数) | |
| クリーンアップを伴う通常のプログラム終了を引き起こす (関数) | |
| exit() の呼び出し時に呼ばれる関数を登録する (関数) | |
| (C11) |
完全なクリーンアップを行わずに通常のプログラム終了を引き起こす (関数) |
at_quick_exit の C++ ドキュメント | |