GV

GeezerVison

The World Wide Web, restored to 800 pixels of glory.

Home|About|Gaming cabinet|Archives|How it works|Starter sites

On this site

  • cpprefjp - C++日本語リファレンス
  • GitHub Project

This view

  • Original page
  • New address

GeezerVison is showing cpprefjp.github.io — std::quick_exit - cpprefjp C++日本語リファレンス

  1. リファレンス
  2. cstdlib
  3. quick_exit

最終更新日時: 2026年09月11日 13時06分31秒 (JST)
Akira Takahashi が更新

履歴 編集

function
<cstdlib>

std::quick_exit(C++11)

namespace std {
  [[noreturn]] void quick_exit(int status) noexcept; // (1) C++11
}

概要

後処理をせずに、プログラムを終了させる。

exit()関数は、オブジェクトのデストラクタを呼び出して破棄してからプログラムを終了させるが、この関数はその破棄処理を行わずに、プログラムを終了させる。これは、リソースの破棄を、OSに任せることを意味する。

この関数の主な用途は、マルチスレッドプログラムの同期をキャンセルしてプログラムを終了させる、というものである。たとえば、ユーザーが作成したスレッドクラスのデストラクタが、スレッド終了まで待機するものだったとしたら、デストラクタを実行するexit()関数では、スレッドが終了するまで、プロセスを終了できない。そういった状況でこの関数を使用することにより、プロセスの終了を阻害するような破棄処理をOSに任せて、即座にプロセスを終了させられる。

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

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

効果

  • at_quick_exit()関数で登録された関数が、逆順で呼び出される。
    • 登録された関数で例外が送出された場合、std::terminate()関数が呼び出され、プログラムが異常終了する。
  • この関数を呼び出したときに生存しているオブジェクトは、破棄されない。
  • Cストリームのバッファはフラッシュされない。
  • 登録された関数が呼び出されたあと、_Exit(status)を呼び出す。

戻り値

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

備考

  • この関数は、フリースタンディング処理系でも使用できる。

例

#include <cstdlib>

void f()
{
  std::quick_exit(0); // プログラムを正常終了させる
}

int main()
{
  f();
}

出力

バージョン

言語

  • C++11

処理系

  • Clang: 3.4 ✅
  • GCC: 4.8 ✅
  • Visual C++: 2015 ✅

関連項目

名前 説明
at_quick_exit quick_exit関数でプログラムが終了するときに呼ばれる関数を登録する
exit プログラムを終了させる

参照

  • N2440 Abandoning a Process
  • detachスレッドとプログラム終了処理 - yohhoyの日記
  • LWG Issue 1066. Use [[noreturn]] attribute in the library
    • C++11で、呼び出し元へ戻らない標準ライブラリ関数に[[noreturn]]属性が付加された
  • LWG Issue 1264. quick_exit support for freestanding implementations
    • C++11で、フリースタンディング処理系でもこの関数が提供されることが規定された
You are visitor 01402503 — GeezerVison does not store the pages you look up.
Best viewed with Netscape Navigator 4.7 or Internet Explorer 6 at 800×600. No cookies required.