gpt4 book ai didi

c - 在 Linux 中获取父进程状态

转载 作者:太空宇宙 更新时间:2023-11-04 07:59:11 25 4
gpt4 key购买 nike

尝试从其子进程 P' 之一获取给定进程 P 的进程状态。

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

那么还有其他方法吗?

最佳答案

没有标准函数可以让进程等待其父进程终止或获取其父进程的退出状态。进程树不是这样工作的—— child 在退出时通知他们的 parent ,而不是相反。

因此,如果你想让子进程知道他们的父进程已经死亡,你必须安排父进程主动通知他们。这似乎是一个信号传递的工作。如果您只需要通知子级父级完全退出(即通过从 main() 返回或调用 exit()),那么这本身就足够了。选择一个信号——可能是 SIGUSR1SIGUSR2——并让父级注册一个 atexit() 处理程序,该处理程序将信号发送给子级。这可能需要也可能不需要父级跟踪其子级。

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

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

关于c - 在 Linux 中获取父进程状态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47907380/

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