Share via


_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.

另請參閱

abort