_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
は _exit
を呼び出して終了コード 3 でプロセスを終了し、親プロセスまたはオペレーティング システムに制御を返します。 _exit
はストリーム バッファーをフラッシュしたり、 atexit
/_onexit
処理を行ったりしません。
Windows の互換性上の理由から、 abort
呼び出し _exit
、Windows ExitProcess
API を呼び出すことができます。これにより、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.