_set_abort_behavior
指定要在程式異常終止時採取的動作。
注意
請勿使用 函 abort
式來關閉 Microsoft Store 應用程式,但測試或偵錯案例除外。 根據 Microsoft 市集原則,不允許以程式設計或 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.