先頭へ戻る

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

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

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

先頭へ戻る


exit関数

概要

プログラムを正常終了させる。

ヘッダ

stdlib.h

形式

// C99 まで void exit(int status);

// C11 から _Noreturn void exit(int status);

引数

status

終了の意味合いを示す値。0 あるいは EXIT_SUCCESS は成功終了を表す。EXIT_FAILURE は失敗終了を表す。これら以外の値を返した場合の動作は、処理系定義

戻り値

なし(呼び出し元に戻ることがない)

詳細

プログラムを正常終了させる。

終了前に、atexit関数で登録されていた関数が、登録された順番の逆順に実行される。その後、オープンされていた出力ストリームがフラッシュされる。そして、すべてのストリームがクローズされる。また、tmpfile関数が生成していた一時ファイルも削除される。最後に、プログラムが終了する。制御がプログラムの実行環境へ戻されるが、その際に何らかの結果を処理系定義の形で返す。
注意

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

C11 の at_quick_exit関数によって登録された関数は呼び出されない。

使用例

#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関数以外にプログラムを終了させる関数として、いくつかの処理を省いた _Exit関数がある。C11 からは、できる限り迅速にプログラムを正常終了させる quick_exit関数が追加されている。

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

解説章


参考リンク


更新履歴

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

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

'2018/1/22 新規作成。


------------------------------------------------------------------------

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

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

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

Programming Place Plus のトップページへ



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