_set_abort_behavior
指定要在程式異常終止時採取的動作。
注意
請勿使用 函 abort
式來關閉 Microsoft Store 應用程式,但測試或偵錯案例除外。 根據 Microsoft Store 原則,不允許以程式設計或 UI 方式關閉市集應用程式。 如需詳細資訊,請參閱 UWP 應用程式生命週期 。
語法
unsigned int _set_abort_behavior(
unsigned int flags,
unsigned int mask
);
參數
flags
abort
旗標的新值。
mask
要設定之 abort
旗標位元的遮罩。
傳回值
旗標的舊值。
備註
有兩個 abort
旗標:_WRITE_ABORT_MSG
和 _CALL_REPORTFAULT
。 _WRITE_ABORT_MSG
決定是否要在程式異常終止時列印有用的文字訊息。 此訊息說明應用程式已呼叫 abort
函式。 預設行為是列印訊息。 _CALL_REPORTFAULT
如果已設定,則會叫用Windows 錯誤報告服務機制(先前稱為 Watson 博士),以在呼叫 時 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> |
如需相容性詳細資訊,請參閱相容性。
範例
// 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 問題作為內容的意見反應機制,並將它取代為新的意見反應系統。 如需詳細資訊,請參閱:提交並檢視相關的意見反應