在Linux中获取父进程状态

问题描述 投票:0回答:1

试图从其子节点P'获取给定进程P的进程状态。

我知道函数waitpid(),但在doc中,它说它用于检查子进程的状态。

那么还有其他方法吗?

c linux process parent-child status
1个回答
2
投票

没有标准函数可以让进程等待其父进程终止或获取其父进程的退出状态。进程树不会那样工作 - 孩子们退出时会通知他们的父母,而不是相反。

因此,如果您希望子进程了解其父母的死亡,您必须安排父母主动通知他们。这似乎是一个信号工作。如果您只需告知孩子​​父母干净利落(即从main()回来或致电exit()),那么这本身就足够了。选择一个信号 - 可能是SIGUSR1SIGUSR2 - 并让父母注册一个atexit()处理程序,将该信号发送给孩子们。这可能会或可能不会要求父母跟踪其子女。

因为你提到获得父母的退出状态,你可能想要更多一点。您可以通过选择要发送给他们的两个(或更多)信号中的哪一个来向孩子们获取粗粒度信息,但是对于更详细的信息,您需要IPC机制。您可以将退出状态写入共享内存或管道(或其中的几个),将消息发送到套接字或消息队列,将状态写入普通文件,或者可能是我未想到的其他内容。

您还应该考虑现有模型运行良好,并且已经完成了40年。它可能确实不能满足您的需求,但我建议您考虑一下您的设计是否可以改进以更加干净地适应Unix模型。

© www.soinside.com 2019 - 2024. All rights reserved.