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

C言語編 標準ライブラリのリファレンス exit

先頭へ戻る

exit関数

概要 プログラムを正常終了させる。
ヘッダ stdlib.h
形式 void exit(int status);
引数 status 終了の意味合いを示す値。0 あるいは EXIT_SUCCESS は成功終了を表す。EXIT_FAILURE は失敗終了を表す。これら以外の値を返した場合の動作は、処理系定義。
戻り値 なし(呼び出し元に戻ることがない)
詳細 プログラムを正常終了させる。制御がプログラムの実行環境へ戻されるが、その際に何らかの結果を処理系定義の形で返す。
終了前に、atexit関数で登録されていた関数が、登録された順番の逆順に実行される。その後、オープンされていた出力ストリームがフラッシュされる。そして、すべてのストリームがクローズされる。また、tmpfile関数が生成していた一時ファイルも削除される。最後に、プログラムが終了する。
注意 atexit関数で登録した関数の中から、更に exit関数や longjmp関数を呼び出した場合の動作は未定義。
なお、引数に EXIT_FAILURE を指定した失敗終了と、abort関数による異常終了とでは意味が異なる。
使用例
#include <stdio.h>
#include <stdlib.h>

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

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

    atexit( onExit );
    exit( EXIT_SUCCESS );

    puts( "bbbbb" );

    return 0;
}

実行結果:

aaaaa
onExit
関連 exit関数による終了処理の際に呼び出される関数を atexit関数で登録できる。
exit関数以外にプログラムを終了させる関数として、異常終了を表す abort関数がある。
C99 では、いくつかの処理を省いた _Exit関数が追加されている。
解説章


参考リンク



更新履歴

'2018/4/24 _Exit関数の追加を受けて、全体的に文章を見直し修正。

'2018/4/6 すべてのストリームがクローズされることを追記。
atexit関数によって登録した関数内で longjmp関数が呼び出された場合の動作について追記。
「不成功」という表現を「失敗」に統一。

'2018/1/22 新規作成。



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

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

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

Programming Place Plus のトップページへ


このエントリーをはてなブックマークに追加
rss1.0 取得ボタン RSS