4

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

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

4

1 回答 1

1

kill(pid, 0)如果进程存在并且您可以向它发送信号,则只会返回 0。如果进程没有以您的身份运行(并且您不是 root),那么调用将失败并显示 -EPERM。

于 2012-06-11T02:53:14.250 回答