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