posts - 23,  comments - 3,  trackbacks - 0

          進(jìn)程只是提供了一段地址空間和內(nèi)核對象,其運(yùn) 行時通過其他地址空間內(nèi)的主線程來體現(xiàn)的。當(dāng)主線程的進(jìn)入點(diǎn)函數(shù)返回時,進(jìn)程也就隨之而技術(shù)。這種進(jìn)程的種植方式是進(jìn)程的正常退出。進(jìn)程中的所有縣城資源 都能夠得到正確的清除。除了這種進(jìn)程的正常退出方式之外,優(yōu)勢還需要在程序中通過代碼來強(qiáng)制結(jié)束本進(jìn)程或其他進(jìn)程的運(yùn)行。

          ExitProcess

          void ExitProcess(UINT uExitCode);

          其 參數(shù)uExitCode為進(jìn)城設(shè)置了退出代碼。該函數(shù)具有強(qiáng)制性,在執(zhí)行完畢后進(jìn)程即被結(jié)束,因此位于其后的任何代碼將不能被執(zhí)行。雖然 ExitProcess()函數(shù)可以再結(jié)束進(jìn)程同時通知與其關(guān)聯(lián)的動態(tài)鏈接庫,但是由于他的這種強(qiáng)制性,使得ExitProcess()函數(shù)在使用上將存 有安全隱患。例如,如果最親愛程序調(diào)用ExitProcess()函數(shù)之前曾用new操作,申請一段空間,那么敬愛那個會由于ExitProcess() 函數(shù)的強(qiáng)制性而無法通過delete操作符將其釋放,從而造成內(nèi)存泄露。

          有鑒于ExitProcess()函數(shù)的強(qiáng)制性和安全性,在使用時一定要引起注意。

          Terminateprocess()

          ExitProcess 只能強(qiáng)制本進(jìn)程的推出,如果要在一個進(jìn)程中強(qiáng)制結(jié)束其他的進(jìn)程就需要用TerminateProcess()來實現(xiàn),與ExitProcess()不 同,TerminateProcess()函數(shù)執(zhí)行后,被終止的進(jìn)程不會得到任何關(guān)于程序退出的通知。也就是說,被終止的進(jìn)程是無法再結(jié)束運(yùn)行前進(jìn)程推出 前的收尾工作的。所以,通常只有在其他任何地方都無法迫使進(jìn)程退出時才會考慮使用TerminateProcess()去強(qiáng)制結(jié)束進(jìn)程。

          BOOL TerminateProcess(HANDLE hProcess, UINT uExitCode);

          參 數(shù)hProcess和uExitCode分別為進(jìn)城句柄和退出代碼。如果被結(jié)束的是本進(jìn)程,可以通過GetCurrentProcess()獲取到句柄。 TerminateProcess()是異步執(zhí)行的,在調(diào)用后返回并不能確定被終止進(jìn)程是否已經(jīng)真的退出,如果調(diào)用TerminateProcess() 的進(jìn)程對此細(xì)節(jié)關(guān)心,可以通過WaitForSingleObject()來等待進(jìn)程的真正結(jié)束。

          在VC中如何結(jié)束系統(tǒng)正在運(yùn)行的其他進(jìn)程(該進(jìn)程必須有窗口界面),其實很簡單,按照如下步驟進(jìn)程:

          1)取得進(jìn)程的句柄(利用FindWindow函數(shù)得到);

          2)獲取進(jìn)程ID號(用GetWindowThreadProcessId函數(shù)獲?。?;

          3)打開進(jìn)程,OpenProcess函數(shù)中的第一個參數(shù)設(shè)為PROCESS_TERMINATE,就可以獲取處理該進(jìn)程的句柄;

          4)利用TerminateProcess函數(shù)結(jié)束進(jìn)程,將該函數(shù)的第二個參數(shù)設(shè)為4.

          posted on 2011-01-26 15:53 temper 閱讀(4391) 評論(0)  編輯  收藏

          只有注冊用戶登錄后才能發(fā)表評論。


          網(wǎng)站導(dǎo)航:
           
          主站蜘蛛池模板: 舒城县| 新建县| 原阳县| 通榆县| 昌都县| 文化| 阳谷县| 新化县| 漳州市| 个旧市| 宽城| 古浪县| 广平县| 西充县| 洛浦县| 陇川县| 麻阳| 和龙市| 四子王旗| 新平| 五指山市| 崇州市| 航空| 清苑县| 孟连| 达尔| 台湾省| 武清区| 微博| 青铜峡市| 曲阳县| 伊宁市| 陆良县| 易门县| 许昌县| 长治市| 南木林县| 施甸县| 灵璧县| 繁峙县| 宜良县|