有一台机器上运行多个进程。名字和句柄未知,但它们都有一段代码在我们的控制下运行。
运行命令行进程。它向其他进程发信号表示它们需要结束(SetEvent),我们的代码会在其他进程中进行处理。
目标:
的命令行程序需要等待,直到其他进程已经结束。这怎么能实现?
想到的只是设置一些共享内存或其他东西,并让每个进程都将其句柄写入其中,以便命令行进程可以在其上等待,但这看起来像是付出了很多努力。必须有一些可以等待的内核级引用计数?
编辑1:
我想,也许分配流程,工作对象,然后在命令行程序可以等待呢?不理想,但...
编辑2:
不能使用作业对象,因为它会使用其他工作干扰的东西。所以现在我认为这些进程会获得一些/任何同步对象(信号量,事件等)的句柄,并且命令行进程将轮询它的存在。它将不得不轮询,如果它等待它将保持对象活着。同步对象在进程死亡时被窗口清除,所以下一次轮询会指示没有进程。不是最好的,最干净的方法,但它足够简单,足以完成它需要做的工作。有什么进展?
使用命名管道为您的客户端进程传达其进程ID或重复的进程句柄,并让服务器进程等待所有这些进程句柄。无论进程如何终止(正常停顿,崩溃),进程句柄都会发出信号。 – IInspectable
'也许将进程分配给作业对象vs处理未知。过程如何创建?一次全部 ?或者在一段时间内可以创建新的流程? – RbMm
@RbMm处理命令行进程未知的事件。进程本身可以知道自己的句柄并将自己添加到作业对象中。用户可以自由运行并自由终止这些过程。 – parrowdice