如何链接 2 个进程,以便当一个进程崩溃时另一个进程也崩溃?

Posted

技术标签:

【中文标题】如何链接 2 个进程,以便当一个进程崩溃时另一个进程也崩溃?【英文标题】:How can I link 2 processes so when one crashes make the other one crash too? 【发布时间】:2011-01-05 17:29:16 【问题描述】:

我正在编写一个 bash 程序,该程序通过命名管道在两个进程(A 和 B)之间具有 IPC。我很担心,因为如果 A 崩溃,B 可能会被无限期地阻塞(反之亦然),因为命名管道正在阻塞。我可以链接 A 和 B,如果 A 崩溃,强制 B 也崩溃吗?解决此阻塞问题的任何其他替代方案将不胜感激。

提前谢谢你。

【问题讨论】:

为什么不在单独的线程中运行通信,如果长时间阻塞则将其杀死? 【参考方案1】:

您可能需要一个额外的进程“C”来监控进程“A”和进程“B”的活动

【讨论】:

你的意思是一个进程有A和B的pid并定期检查?【参考方案2】:

如果您在谈论 bash 脚本?如果是这样,您可以捕获发送到 A 的信号以将其杀死,然后将信号发送到 B 使其退出。

相关的 bash 功能是:trapkill。相关的信号是 SIGKILL、SIGINT、SIGHUP 等。调用:trap -l 将列出所有可能的信号。

【讨论】:

以上是关于如何链接 2 个进程,以便当一个进程崩溃时另一个进程也崩溃?的主要内容,如果未能解决你的问题,请参考以下文章

如何从任何链接进程获得任何崩溃通知?

我可以将进程链接到 bash 中的文件吗?

如何同步线程中的 2 个进程以便它们一起运行?

进程崩溃时未释放 Win32 命名互斥锁

如何强制 WCF 线程中未处理的异常使进程崩溃?

创建一个不是创建进程子进程的新进程