如何在进程A处于活动状态时使进程B运行

时间:2012-08-24 09:58:34

标签: c++ windows waitforsingleobject

我有一个进程A启动另一个进程B.
当前进程B等待在退出之前由进程'A'发信号的信号(WaitForSingleObject),并且一旦设置了信号,进程B退出。 但是,当进程A意外终止或崩溃时,我最终仍然运行进程B. 除了进程A崩溃之外,如何让B无限期地等待信号? 换句话说,进程B应该只在进程A运行之前保持活动状态。 感谢

4 个答案:

答案 0 :(得分:1)

WaitForSingleObject进程A的进程句柄;当A死亡时它会发出信号。

另一种方法是将B作为调试器附加到A.然后,当进程退出时,您将获得一个事件,并且可以完全同步退出。

答案 1 :(得分:0)

启动B时,将其传递给A的pid。在B中,启动一个新线程,主动检查该pid是否与正在运行的A相对应。当它不再成立时,退出。

答案 2 :(得分:0)

你也可以让tcp套接字在两个进程之间发送心跳消息,你甚至可以将它扩展到A和B在不同机器上的位置。

答案 3 :(得分:0)

最简单的方法是使用mutex而不是事件。如果进程A退出,则互斥锁将被视为放弃,并且进程B对互斥锁的等待将被满足。

或者,你可以给B一个句柄来处理A并让它等待事件和句柄来处理A.如果你使用这种方法,B获得A句柄的最好方法是继承;在进程A中使用DuplicateHandle(bInheritHandle设置为TRUE)将GetCurrentProcess返回的伪句柄转换为实际句柄。将句柄的值传递给命令行或环境变量中的进程B.