检查不相关进程的退出代码

Posted

技术标签:

【中文标题】检查不相关进程的退出代码【英文标题】:Check exit code of an unrelated process 【发布时间】:2021-01-12 12:52:06 【问题描述】:

我想使用在 linux 上运行的 C 代码检查前台进程的退出代码。据我了解,wait()waitpid() 对于子进程很有用,但就我而言,它是一个外部进程。我可以在 /proc//stat 处于活动状态时从该进程读取信息,但是随着进程关闭,从 /proc// 读取变得有问题,我没有找到任何与退出代码。

我尝试过的其他事情:

popen() 一些 bash 命令。 echo $? 始终返回 0,即使感兴趣的进程以错误代码退出。我不确定它是否针对感兴趣的过程。我尝试调用的另一个 bash 命令是 wait <pid>,但该命令立即返回,而进程仍在运行。

【问题讨论】:

我想到的另一个想法是在退出之前将退出值写入文件,然后从我的程序中读取它。这个解决方案有点笨拙,不知道还有什么可以用的 【参考方案1】:

如果您可以访问前台进程的代码,则可以通过消息队列甚至套接字(例如 udp 多播)发送消息 - 这将使解决方案更加通用(您的 c 程序可以在不同的机器)。

另一种选择是使用日志服务(syslog 或类似的东西)。它有一些 使进程能够记录其退出代码的有用接口。

【讨论】:

我确实可以访问前台进程的代码。我认为消息队列解决方案适合我的情况。谢谢。

以上是关于检查不相关进程的退出代码的主要内容,如果未能解决你的问题,请参考以下文章

循环向量退出并出现错误进程以退出代码 -1073741819 完成

进程以退出代码 -1073741571 结束

有没有办法获取早期管道 Scala 进程 (#|) 的退出代码?

C#/.Net 启动进程,退出代码为 -2146234327

使用 Python 子进程通信方法时如何获取退出代码?

setPixmap 导致进程以退出代码 1 完成 [重复]