Linux,存储系统守护进程和其他进程的返回码在哪里?

时间:2013-08-26 10:15:39

标签: linux unix process status

我怎么知道,如果一个进程完成了它的执行而没有任何错误? 我怎么知道,如果C ++程序已经成功返回OS?

如果我通过shell运行它,那么我可以使用$?但是如果我正在检查由其他用户启动的进程的状态,我该如何检查状态?

说我早上开始了一个过程,它在中午结束了。我一直在做其他一些活动,直到晚上,在离开之前,我想检查一下这些过程已经返回给OS。我怎么能以编程方式来解决这个问题。通过syslog运行会有所帮助,但寻找替代方案。

我可以浏览操作系统的进程表并阅读这些信息,但对我的要求来说听起来有点复杂。我们是否有类似syslog的东西,其中记录了所有进程错误?

检索已终止进程(其他用户)报告的错误的其他任何方法?

1 个答案:

答案 0 :(得分:3)

当进程终止其父进程时,必须使用waitwaitpid函数对此进行确认。这些函数也返回退出状态。调用waitwaitpid后,将删除进程表条目,并且退出状态不再存储在操作系统中的任何位置。您应该检查用于启动该过程的软件是否在某处保存退出状态。

如果父进程未确认子进程已终止,则可以从/proc文件系统中读取其退出状态:它是/proc/[pid]/stat中的最后一个字段。它以wait返回的格式存储,因此您必须除以256才能获得退出代码。你也可能必须是root。