我有一个启动多个子应用程序的主应用程序(自身的副本,但在命令行上有不同的开关)。在运行时,子应用程序会做一些工作,而主应用程序会收集并汇总它们的结果。如果主应用程序正常关闭,则它会停止所有子应用程序。但是,有时,向导会异常关闭(例如,它崩溃或被任务管理器杀死)。在这种情况下,所有子应用程序继续工作..您必须手动结束它们。
想到的选项:
- 定期从主应用程序向子应用程序发送消息。如果消息未到达,则向导不存在,需要关闭。这个选项不适合,因为。向导可能会在处理数据时挂起或在调试器中挂起。
- 从主服务器创建一个带时间戳的互斥锁。如果没有新的互斥体,请与孩子一起检查 - 没有主人,有必要关闭。但是,例如,每 5 秒创建一个互斥体并持续一个小时不是很浪费吗?
- 将master的一些进程ID传递给子应用程序并检查它是否存在?不是名字,因为 这对所有人来说都是共同的,但还有别的吗?怎么做?
- 不知何故?
哪种方式是正确和最优的?
子应用程序如何跟踪主应用程序已关闭?
所以,多亏了zed的帮助,终于搞定了。
在大师中我们写道:
在儿童中添加:
现在,当向导关闭时,无论出于何种原因,子应用程序也会自行关闭。是的,
Halt这是一个非常粗略的闭包,但对于原型来说它就可以了。