Namespaces
Variants

at_quick_exit

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

func が指す関数を、クイックプログラム終了時( quick_exit 経由)に呼び出されるよう登録します。

複数のスレッドからこの関数を呼び出してもデータ競合は発生しません。実装は少なくとも32個の関数の登録をサポートすることが保証されています。正確な上限は実装定義です。

登録された関数は 正常なプログラム終了 時には呼び出されません。その場合に関数を呼び出す必要がある場合は、 atexit を使用する必要があります。

目次

パラメータ

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

戻り値

0 登録が成功した場合は0、それ以外の場合は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 at_quick_exit関数 (p: 255)
  • C11規格 (ISO/IEC 9899:2011):
  • 7.22.4.3 at_quick_exit関数 (p: 351)

関連項目

異常なプログラム終了を引き起こす(クリーンアップなし)
(function)
クリーンアップを行った正常なプログラム終了を引き起こす
(function)
exit() 呼び出し時に実行される関数を登録する
(function)
完全なクリーンアップなしで正常なプログラム終了を引き起こす
(function)
C++ documentation for at_quick_exit