利用SetUnhandledExceptionFilter機制實現程式異常後自動重啟

來源:互聯網
上載者:User

利用SetUnhandledExceptionFilter機制實現程式異常後自動重啟,我們希望我們的程式在異常崩潰結束後還可以自動重啟。利用下面的代碼就可以實現我們的程式異常結束後再次自動重新啟動.

要用下面的標頭檔和LIB庫:

#include <dbghelp.h>
#pragma comment(lib, "dbghelp.lib")

先在主程式註冊代碼如下:

SetUnhandledExceptionFilter(LPTOP_LEVEL_EXCEPTION_FILTER(MyUnhandledExceptionFilter));

關於MyUnhandledExceptionFilter代碼具體實現:

LONG MyUnhandledExceptionFilter(_EXCEPTION_POINTERS* ExceptionInfo)
{
CHAR FileName[MAX_PATH] = { 0 };
STARTUPINFO si;
PROCESS_INFORMATION pi;

ZeroMemory(&si, sizeof(STARTUPINFO));
si.cb = sizeof(STARTUPINFO);
ZeroMemory(&pi, sizeof(PROCESS_INFORMATION));

GetModuleFileNameA(NULL, FileName, MAX_PATH);

if(!CreateProcessA(
FileName,
NULL,
NULL, 
NULL,
FALSE,
0,
NULL,
NULL,
(LPSTARTUPINFOA)&si,
&pi))
{
MessageBeep(MB_OK);
}

return EXCEPTION_EXECUTE_HANDLER;
}

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.