VC MFC 強制結束當前程序

2021-10-03 21:00:17 字數 472 閱讀 3928

最近接手乙個mfc老專案,bug太多,主線程退出的時候,也不管子執行緒死活,直接退出,導致子執行緒又去訪問那些被釋放的資源,結果程式無法關閉,或者導致程序在後台駐留了。

這裡提供一種簡單粗暴的方法:

//強行結束自己

執行緒終止滿足如下條件之一:

1、執行緒函式返回

2、執行緒執行中呼叫exitthread

3、同一程序下 任意執行緒呼叫terminatethread指出該執行緒的handle

4、同一程序下 任意執行緒呼叫terminateprocess結束該執行緒所在的程序

5、該執行緒所在的程序中任意執行緒呼叫exitprocess

由於高階語言編譯的程式在(正常)結束的時候都會呼叫exitprocess,所以系統會強行終止它的所有執行緒(如果之前還沒結束的話)。

強制結束系統程序

一般我們通過任務管理器程序標籤來結束程序,但對於有些系統程序或系統異常時就有可能出現一些殺不死的程序。其實對於此類程序我們也是可以殺掉的。首先,我們啟動任務管理器,選擇檢視 選擇列,在彈出對話方塊中勾選pid選項,確定退出。這時,程序列表就多了pid列。pid為程序編號的縮寫 如下圖 然後,我們進入...

驅動 強制結束程序 整理

有一陣子沒 寫部落格,正好這幾天 寫了個 核心級強制結束程序 的小例子。寫這個例子之前都沒去查什麼資料,主要是想試試自己能不能寫出來吧。寫完後才發現 看雪論壇 曾經發表過一篇很相似的文章,實現的細節可能有點不一樣,不過原理基本是相同的了。都是通過 這個 pspterminatethreadbypoi...

reparent指定程序到當前程序

作者 李先靜 今 天遇到乙個問題,需要監視某個應用程式的退出事件,並得到它的退出碼。waitpid只能監視子程序,對其它程序沒有效果,怎麼才能reparent乙個 程序呢?我在核心裡找了半天也沒有找到相應的系統呼叫,後來想到偵錯程式都可以,那一定有辦法。偵錯程式是用ptrace實現的,我試了一下,發...