检测进程是否崩溃(或停止)的简单方法?

我需要检测一个进程是否停止(不要紧,如果坠毁,正常退出,或其他)。

我的设置是这样的: – 任务A – 做一些处理(偶尔崩溃)。
– 任务B – 启动任务A,并等待结果

我的想法是开始时在任务A中打开一个文件,并在任务B中使用inotify来检测任务A何时打开和closures文件。 当任务A停止(正常或崩溃)时,文件将被closures,任务B将检测到这一点。 (当任务A崩溃时,文件将被closures,对不对?)

我的问题是:
– 以上是否正常工作?
– 有没有更简单或更好的方法来检测任务停止?

PS如果有问题,我使用的是Fedora 9

编辑上面的设置非常简单。 我有2个任务B和30个任务A.因此,我不能使用systemfork

使用守护进程监视工具(如runitwatch )要容易得多。 这些是为这个工作定制的,例如看一个受控的过程运行和死亡。 如果你自己编写代码,使用wait和friends来等待产生的进程。

taskB应该使用fork()使taskA成为其子进程。 然后你可以wait(&status) (在C中)… status将保存任务A的退出代码。你可以读取status来检查它是否正常退出,或者是否有某种错误代码。

你可以使用一个TCP套接字 – 即将B设置为服务器并允许A连接。 B应该定期向A写入一个字节(在检测到A已经消失之前,不管你想要什么延迟)。 当连接消失(即写入失败),你知道A已经消失。