1

我怎么知道一个进程是否已完成执行而没有任何错误?我如何知道 C++ 程序是否已成功返回操作系统?

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

假设我早上开始了一个进程,中午就终止了。直到晚上,我一直在从事其他一些活动,在离开之前,我想检查哪些进程已返回到操作系统。我怎么能以编程方式实现这一点。通过 syslog 运行会有所帮助,但要寻找替代方案。

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

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

4

1 回答 1

3

wait当一个进程终止时,它的父进程必须使用orwaitpid函数来确认这一点。这些函数还返回退出状态。在调用waitwaitpid进程表条目被删除后,退出状态不再存储在操作系统的任何地方。您应该检查用于启动进程的软件是否将退出状态保存在某处。

如果父进程尚未确认子进程已终止,您可以从/proc文件系统中读取其退出状态:它是/proc/[pid]/stat. 它以与返回它相同的格式存储wait,因此您必须除以 256 才能获得退出代码。另外,您可能必须是root用户。

于 2013-08-26T10:36:04.903 回答