讓程式異常退出後自動重啟

2021-04-27 02:08:45 字數 1248 閱讀 9515

「程式 freeeim.exe 遇到問題異常退出,是否重啟?」,類似的情況我們似乎碰見過,很多程式都有這個功能;這是怎麼實現的呢?經

過一番努力,在msdn找到了setunhandledexceptionfilter函式,利用它,可以實現這個功能。其實這個過程叫做seh("structured exception

handling")結構化異常處理。是作業系統提供給程式設計者的強有力的處理程式錯誤或異常的**。我在這裡簡單的說一下如何使用,如有錯

誤,請高手不吝指正。

有了它,太好了。要是你的程式無緣無故蕩掉了,你可以利用它,幫你的程式重啟。

一,處理函式

程式在出現異常時,會呼叫這個函式,我們就在這裡處理程式蕩後的所有事,包括重啟。

原型:long winapi freeeim_unhandledexceptionfilter(lpexception_pointers exceptioninfo);

我們這裡先簡單試驗一下。

long winapi freeeim_unhandledexceptionfilter(lpexception_pointers exceptioninfo)

// 此**可以 copy - paste 使用。

然後在oninitdialog()裡加入:

setunhandledexceptionfilter(freeeim_unhandledexceptionfilter);// 此**可以 copy - paste 使用。

int *i=0;// 此**可以 copy - paste 使用。

*i=0;// 此**可以 copy - paste 使用。

編譯看看有什麼結果。

二,如何重啟

重啟也不難,這裡我們用到乙個函式winexec,函式比較常用,不熟悉的上google找一下。

long winapi freeeim_unhandledexceptionfilter(lpexception_pointers exceptioninfo)

// 此**可以 copy - paste 使用。

然後在oninitdialog()裡加入:

setunhandledexceptionfilter(freeeim_unhandledexceptionfilter);// 此**可以 copy - paste 使用。

int *i=0;// 此**可以 copy - paste 使用。

*i=0;// 此**可以 copy - paste 使用。

編譯一下,乙個簡單的異常重啟程式就實現了。

程式異常退出後自啟

在windows上,許多服務或者展示類的客戶端往往都會附帶開機自啟 程式異常退出後自啟這一功能。功能很簡單,實現起來也不複雜,只需要建立乙個監控程式來一直檢測其是否正在執行,沒執行則啟動它 開機自啟只需將程式路徑新增到登錄檔中即可。include stdafx.h include include i...

Linux 下實現程序退出後自動重啟

linux 下實現程序退出後自動重啟 一般方案有2 1.採用指令碼,網上很多,但對一些嵌入式系統因資源限制,大部分命令裁剪了,故不可行 2.採用fork,父程序等待子程序退出 一下採用fork 方法實現,對於重啟多個程序,可採用 pid waitpid 1,status,wnohang 避免多個程序...

Linux執行指令碼讓程序掛掉後自動重啟

1 建立迴圈監聽指令碼 autostart.sh 例 其中futures market server v3andwebsoket.jar 是要監聽的執行程式 bin bash while true docount ps ef futures market server v3andwebsoket.j...