_set_abort_behavior
プログラムが異常終了した場合に実行するアクションを指定します。
Note
テストまたはデバッグのシナリオを abort
除き、この関数を使用して Microsoft Store アプリをシャットダウンしないでください。 プログラムまたは UI を使用して Store アプリを閉じる方法は、Microsoft Store ポリシーでは許可されていません。 詳細については、UWP アプリのライフサイクルに関するページを参照してください。
構文
unsigned int _set_abort_behavior(
unsigned int flags,
unsigned int mask
);
パラメーター
flags
abort
フラグの新しい値。
mask
設定する abort
フラグのビットのマスク。
戻り値
フラグの元の値。
解説
abort
フラグには、_WRITE_ABORT_MSG
と _CALL_REPORTFAULT
の 2 つの種類があります。 _WRITE_ABORT_MSG
は、プログラムが異常終了したときに説明のテキスト メッセージを出力するかどうかを指定します。 メッセージは、アプリケーションが abort
の関数を呼び出したことを示します。 既定の動作はメッセージを表示することです。 _CALL_REPORTFAULT
が設定されている場合は、Windows エラー報告 サービス メカニズム (旧称ワトソン博士) を呼び出して、呼び出されたときに abort
Microsoft にエラーを報告します。 既定では、クラッシュ ダンプのレポートは、非デバッグ ビルドで有効になっています。 Windows エラー報告ハンドラーが呼び出されていない場合は、 abort
終了コード 3 でプロセスを終了するために呼び出 _exit
し、親プロセスまたはオペレーティング システムに制御を返します。 _exit
はストリーム バッファーをフラッシュしたり、処理を行ったり atexit
/_onexit
しません。
Windows の互換性上の理由から、呼び出し時abort
に Windows ExitProcess
API が呼び_exit
出される可能性があります。これにより、DLL 終了ルーチンを実行できるようになります。 デストラクターは実行可能ファイルで実行されませんが、実行可能ファイルのプロセス空間に読み込まれた DLL でも同じではない可能性があります。 この動作は、C++ 標準に厳密に準拠していません。 DLL を含むプロセスを直ちに終了するには、Windows TerminateProcess
API を使用します。 標準準拠の動作を呼び出 TerminateProcess
す中止シグナル ハンドラーを登録することもできます。 準拠している動作は、Windows の互換性に多少のコストがかかる場合があります。
既定では、この関数のグローバル状態の適用対象は、アプリケーションになります。 これを変更するには、「CRT でのグローバル状態」を参照してください。
必要条件
ルーチンによって返される値 | 必須ヘッダー |
---|---|
_set_abort_behavior |
<stdlib.h> |
互換性の詳細については、「 Compatibility」を参照してください。
例
// crt_set_abort_behavior.c
// compile with: /TC
#include <stdlib.h>
int main()
{
printf("Suppressing the abort message. If successful, this message"
" will be the only output.\n");
// Suppress the abort message
_set_abort_behavior( 0, _WRITE_ABORT_MSG);
abort();
}
Suppressing the abort message. If successful, this message will be the only output.
関連項目
フィードバック
https://aka.ms/ContentUserFeedback」を参照してください。
以下は間もなく提供いたします。2024 年を通じて、コンテンツのフィードバック メカニズムとして GitHub の issue を段階的に廃止し、新しいフィードバック システムに置き換えます。 詳細については、「フィードバックの送信と表示