如何找出Linux进程何时退出?

时间:2010-09-09 12:54:11

标签: linux process

我找不到一个很好的方法来找出Linux进程何时退出。有人有解决方案吗?

我能想到的是定期检查流程列表,但这不是即时且非常昂贵的(每次都必须遍历所有流程)。

Linux上是否有用于执行此操作的界面?像waitpid这样的东西,除了可以从不相关的过程中使用的东西外?

谢谢, Boda Cydo

4 个答案:

答案 0 :(得分:4)

你不能等待一个无关的过程,只有孩子。

比检查进程列表更简单的轮询方法,如果您有权限,则可以使用kill(2)系统调用和“发送”信号0。

来自kill(2)手册页:

  

如果sig为0,则不发送信号,   但仍然执行错误检查;   这可以用来检查   存在进程ID或进程   组ID

答案 1 :(得分:2)

也许你可以和另一个程序一起启动程序,第二个程序在第一个程序停止时做你想做的事情,比如发送通知等。

考虑这个非常简单的例子:

sleep 10; echo "finished"

sleep 10是第一个进程,echo "finished"是第二个进程(虽然echo通常是一个shell插件,但我希望你明白这一点)

答案 2 :(得分:2)

另一个选择是让进程打开一个IPC对象,例如unix域套接字;您的监视程序进程可以检测进程何时退出,因为它将立即关闭。

答案 3 :(得分:1)

如果您知道相关过程的PID,则可以检查/ proc / $ PID是否存在。这是一个相对便宜的stat()电话。