我在Centos 4上,并在我的C ++程序中使用kill(pid,0)来检查当前是否有一个进程正在运行给定的pid。我开始怀疑存在竞争条件,即在进程开始后不久,有一个小的时间窗口,其中即使实际有一个进程正在运行,kill(pid,0)也不会返回零。
这是一个已知问题吗?当pid实际存在但刚刚启动时,kill()是否会返回非零值?如果kill()不是可靠的测试存在,有没有更好的方法来执行此测试?
答案 0 :(得分:0)
kill(pid, 0)
将仅返回0,并且您将能够向其发送信号。如果进程没有像您那样运行(并且您不是root用户),那么调用将失败并显示-EPERM。