• Class / Function / Type

      std::
    • Header file

      <>
    • Other / All

    最終更新日時(UTC):
    が更新

    履歴 編集

    function
    <cstdlib>

    std::exit

    namespace std {
      void exit(int status);              // C++03
      [[noreturn]] void exit(int status); // C++11
    }
    

    概要

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

    パラメータとして渡されたstatusは、プログラムの終了コードとして使用される。

    • プログラムを正常終了させたい場合は、0もしくはEXIT_SUCCESSをパラメータstatusに設定する。
    • プログラムを異常終了させたい場合は、EXIT_FAILUREをパラメータstatusに設定する。

    この関数でプログラムを終了させた場合、生存しているオブジェクトおよびストリームは、自動的に破棄される。

    効果

    1. スレッド生存期間を持つオブジェクトが破棄される。
    2. 静的生存期間を持つオブジェクトが破棄される。
    3. atexit()関数で登録された関数が、逆順に呼び出される。
      • 登録された関数で例外が送出された場合、std::terminate()関数が呼び出され、プログラムが異常終了する。
    4. 全てのCストリームが破棄される。
      • まだ書き出されていないバッファリングされたデータはフラッシュされる。
      • ストリームが閉じられる。
      • tmpfile()関数の呼び出しで作成された一時ファイルが削除される。
    5. ホスト環境に制御が戻される。
      • パラメータstatusの値が0もしくはEXIT_SUCCESSであった場合、実装依存の正常終了値が返る。
      • パラメータstatusの値がEXIT_FAILUREであった場合、実装依存の異常終了値が返る。
      • それ以外の場合には、実装依存の値が返る。

    戻り値

    この関数は決して返らない。

    #include <cstdlib>
    
    void f()
    {
      std::exit(0); // プログラムを正常終了させる
    }
    
    int main()
    {
      f();
    }
    

    出力

    関連項目

    名前 説明
    atexit プログラムが通常の方法で終了するときに呼ばれる関数を登録する
    quick_exit 後処理をせずに、プログラムを終了させる