std:: _Exit
|
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Program termination | |||||||||||||||||||||
|
|||||||||||||||||||||
| Unreachable control flow | |||||||||||||||||||||
|
(C++23)
|
|||||||||||||||||||||
| Communicating with the environment | |||||||||||||||||||||
| Signals | |||||||||||||||||||||
| Signal types | |||||||||||||||||||||
| Non-local jumps | |||||||||||||||||||||
| Types | |||||||||||||||||||||
|
ヘッダー
<cstdlib>
で定義
|
||
|
[
[
noreturn
]
]
void
_Exit
(
int
exit_code
)
noexcept
;
|
(C++11以降) | |
リソースを完全にクリーンアップせずに通常のプログラム終了を発生させます。
自動記憶域期間、スレッドローカル記憶域期間、静的記憶域期間を持つ変数のデストラクタは呼び出されません。 std::at_quick_exit() または std::atexit() に渡された関数は呼び出されません。ファイルなどのオープンされたリソースがクローズされるかどうかは実装定義です。
exit_code
が
0
または
EXIT_SUCCESS
の場合、正常終了を示す実装定義のステータスがホスト環境に返されます。
exit_code
が
EXIT_FAILURE
の場合、
異常終了
を示す実装定義のステータスが返されます。それ以外の場合、実装定義のステータス値が返されます。
|
フリースタンディング実装は
|
(C++23以降) |
目次 |
パラメータ
| exit_code | - | プログラムの終了ステータス |
戻り値
(なし)
注記
C++23以降
_Exit
はフリースタンディング実装が要求されますが、C言語のフリースタンディング実装では利用可能であることは要求されません。
例
#include <iostream> class Static { public: ~Static() { std::cout << "Static dtor\n"; } }; class Local { public: ~Local() { std::cout << "Local dtor\n"; } }; Static static_variable; // このオブジェクトのデストラクタは呼び出され*ない* void atexit_handler() { std::cout << "atexit handler\n"; } int main() { Local local_variable; // このオブジェクトのデストラクタは呼び出され*ない* // ハンドラは呼び出され*ない* const int result = std::atexit(atexit_handler); if (result != 0) { std::cerr << "atexit registration failed\n"; return EXIT_FAILURE; } std::cout << "test" << std::endl; // std::endlによるフラッシュ // ここにある必要がある。そうしないと何も出力されない std::_Exit(EXIT_FAILURE); }
出力:
test
関連項目
|
異常なプログラム終了を引き起こす(クリーンアップなし)
(function) |
|
|
クリーンアップを行った正常なプログラム終了を引き起こす
(function) |
|
|
C documentation
for
_Exit
|
|