gpt4 book ai didi

c - 如何检测另一个守护进程是否终止

转载 作者:行者123 更新时间:2023-11-30 18:35:01 27 4
gpt4 key购买 nike

我想开发一个守护进程来监督另一个守护进程。如果其他守护进程因任何原因崩溃或停止,那么我的守护进程将重新启动它。

如何检测 C 中另一个进程(非子进程)是否停止?

最佳答案

检测另一个进程是否终止的唯一方法是它是否是您主管的子进程。在这种情况下,您可以调用 waitwaitpid 或安排在进程退出时处理 SIGCHLD 信号。

从根本上来说,这就是像 upstartsystemdrunit 甚至旧版 init 这样的处理器管理程序的工作原理。

还有其他有点的工作方式,但它们最终都很脆弱并且容易出现问题。例如,如果您知道正在运行的进程的 PID,则可以定期使用 kill(pid, 0) 向其发出信号(错误表明给定的 pid 不再运行)...但是有此解决方案有两个问题: PID 可以回收,因此如果相同的 PID 仍然处于事件状态,则不能保证它实际上是您感兴趣的进程。此外,这需要定期轮询正在运行的进程,而调用 waitwaitpid 可能是阻塞操作,这会产生更简单的代码。

同样,您可以检查 /proc 中正在运行的进程列表,但这与之前的解决方案存在几乎相同的问题。

关于c - 如何检测另一个守护进程是否终止,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48598810/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com