我怎么知道,如果一个进程完成了它的执行而没有任何错误? 我怎么知道,如果C ++程序已经成功返回OS?
如果我通过shell运行它,那么我可以使用$?但是如果我正在检查由其他用户启动的进程的状态,我该如何检查状态?
说我早上开始了一个过程,它在中午结束了。我一直在做其他一些活动,直到晚上,在离开之前,我想检查一下这些过程已经返回给OS。我怎么能以编程方式来解决这个问题。通过syslog运行会有所帮助,但寻找替代方案。
我可以浏览操作系统的进程表并阅读这些信息,但对我的要求来说听起来有点复杂。我们是否有类似syslog的东西,其中记录了所有进程错误?
检索已终止进程(其他用户)报告的错误的其他任何方法?
答案 0 :(得分:3)
当进程终止其父进程时,必须使用wait
或waitpid
函数对此进行确认。这些函数也返回退出状态。调用wait
或waitpid
后,将删除进程表条目,并且退出状态不再存储在操作系统中的任何位置。您应该检查用于启动该过程的软件是否在某处保存退出状态。
如果父进程未确认子进程已终止,则可以从/proc
文件系统中读取其退出状态:它是/proc/[pid]/stat
中的最后一个字段。它以wait
返回的格式存储,因此您必须除以256才能获得退出代码。你也可能必须是root。