Warm tip: This article is reproduced from serverfault.com, please click

c-检查无关进程的退出代码

(c - Check exit code of an unrelated process)

发布于 2021-01-12 12:52:06

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

我尝试过的其他事情:

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

Questioner
Dex
Viewed
0
Barak Friedman 2021-01-12 21:28:00

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

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