先頭へ戻る

quick_exit | Programming Place Plus C言語編 標準ライブラリのリファレンス

Programming Place Plus トップページC言語編標準ライブラリのリファレンス(名前順)

Programming Place Plus トップページC言語編標準ライブラリのリファレンス(ヘッダ別)

先頭へ戻る


quick_exit関数

概要 できるだけ速くプログラムを正常終了させる。
ヘッダ stdlib.h
形式 _Noreturn void quick_exit(int status);
引数 status 終了の意味合いを示す値。0 あるいは EXIT_SUCCESS は成功終了を表す。EXIT_FAILURE は失敗終了を表す。これら以外の値を返した場合の動作は、処理系定義
戻り値 なし(呼び出し元に戻ることがない)
詳細

できるだけ速くプログラムを正常終了させる。

まず、at_quick_exit関数で登録されていた関数が、登録された順番の逆順に実行される。その後、引数status を _Exit関数に渡して呼び出す(そして、_Exit関数がプログラムを終了させる)。つまり、exit関数と異なり、出力ストリームのフラッシュ、すべてのストリームのクローズ、tmpfile関数が生成していた一時ファイルの削除を行わないことによって、迅速にプログラムを終了させようとする(こういった終了処理は、プログラムが終了させてから、OS などのシステムが行うことを期待する)。
注意

exit関数とは異なり、atexit関数で登録した関数は呼び出されない。また、signal関数で登録されたシグナルハンドラも呼び出さない。

at_quick_exit関数で登録した関数の中から、さらに quick_exit関数や exit関数、longjmp関数を呼び出した場合の動作は未定義

quick_exit関数の呼び出し中、シグナルが発生した場合の動作は未定義。
使用例
#include <stdio.h>
#include <stdlib.h>

void onQuickExit(void)
{
    puts( "onQuickExit" );
}

void onExit(void)
{
    puts( "onExit" );
}

int main(void)
{
    puts( "aaaaa" );

    at_quick_exit( onQuickExit );
    atexit( onExit );
    quick_exit( EXIT_SUCCESS );

    puts( "bbbbb" );

    return 0;
}

実行結果:

aaaaa
onQuickExit

関連

quick_exit関数による終了処理の際に呼び出される関数を at_quick_exit関数で登録できる。

quick_exit関数以外にプログラムを終了させる関数として、exit関数_Exit関数がある。

異常終了を表す abort関数がある。

解説章


参考リンク


更新履歴



標準ライブラリのリファレンス(名前順)のトップページへ

標準ライブラリのリファレンス(ヘッダ別)のトップページへ

C言語編のトップページへ

Programming Place Plus のトップページへ



はてなブックマーク に保存 Pocket に保存 Facebook でシェア
Twitter でツイート Twitter をフォロー LINE で送る
rss1.0 取得ボタン RSS 管理者情報 プライバシーポリシー