有一臺機器上運行多個進程。名字和句柄未知,但它們都有一段代碼在我們的控制下運行。
運行命令行進程。它向其他進程發信號表示它們需要結束(SetEvent),我們的代碼會在其他進程中進行處理。
目標:
的命令行程序需要等待,直到其他進程已經結束。這怎麼能實現?
想到的只是設置一些共享內存或其他東西,並讓每個進程都將其句柄寫入其中,以便命令行進程可以在其上等待,但這看起來像是付出了很多努力。必須有一些可以等待的內核級引用計數?
編輯1:
我想,也許分配流程,工作對象,然後在命令行程序可以等待呢?不理想,但...
編輯2:
不能使用作業對象,因爲它會使用其他工作干擾的東西。所以現在我認爲這些進程會獲得一些/任何同步對象(信號量,事件等)的句柄,並且命令行進程將輪詢它的存在。它將不得不輪詢,如果它等待它將保持對象活着。同步對象在進程死亡時被窗口清除,所以下一次輪詢會指示沒有進程。不是最好的,最乾淨的方法,但它足夠簡單,足以完成它需要做的工作。有什麼進展?
使用命名管道爲您的客戶端進程傳達其進程ID或重複的進程句柄,並讓服務器進程等待所有這些進程句柄。無論進程如何終止(正常停頓,崩潰),進程句柄都會發出信號。 – IInspectable
'也許將進程分配給作業對象vs處理未知。過程如何創建?一次全部 ?或者在一段時間內可以創建新的流程? – RbMm
@RbMm處理命令行進程未知的事件。進程本身可以知道自己的句柄並將自己添加到作業對象中。用戶可以自由運行並自由終止這些過程。 – parrowdice