如果进程存在,kill(pid,0)是否保证返回0?

时间:2012-06-11 02:41:11

标签: c++ centos race-condition pid

我在Centos 4上,并在我的C ++程序中使用kill(pid,0)来检查当前是否有一个进程正在运行给定的pid。我开始怀疑存在竞争条件,即在进程开始后不久,有一个小的时间窗口,其中即使实际有一个进程正在运行,kill(pid,0)也不会返回零。

这是一个已知问题吗?当pid实际存在但刚刚启动时,kill()是否会返回非零值?如果kill()不是可靠的测试存在,有没有更好的方法来执行此测试?

1 个答案:

答案 0 :(得分:0)

如果进程存在,

kill(pid, 0)将仅返回0,并且您将能够向其发送信号。如果进程没有像您那样运行(并且您不是root用户),那么调用将失败并显示-EPERM。