簡體   English   中英

通過清理殺死子進程

[英]Kill child process with cleanup

是否有辦法殺死我的應用程序的子進程並執行其清理(調用解構函數和atexit函數),類似於exit(exit_code) ,但是在另一個進程上呢?

如果您在Windows上,則可能通過CreateProcess啟動子進程,該進程的最后一個參數為PROCESS_INFORMATION。

MSDN上的CreateProcess

MSDN上的過程信息

選項1:

此過程信息包含在hProcess成員中啟動的過程的句柄。

您可以存儲此句柄並使用它殺死您的子進程。

插入您可能想發送WM_CLOSE和/或WM_QUIT? 以“干凈”地結束該過程:

這是有關如何執行KB的文章, KB如何徹底清除win32進程

**末端插入**

選項2:

這是有關如何正確終止進程樹的討論: 在Windows上終止進程樹

這類事情沒有簡單的Win32 API。 操作系統不在乎您的程序源代碼是用什么語言編寫的,編譯后的程序似乎只是一系列CPU指令和數據。

最干凈的方法是在進程之間建立某種通信通道(例如,通過共享內存),並簡單地請求進程終止。

您可以通過將子進程作為已調試的進程啟動,然后使用調試API來更改子進程的行為來達到相同目的,但這太麻煩了,實現起來也不是那么簡單。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM