我在 Centos 4 上并在我的 C++ 程序中使用 kill(pid, 0) 来检查当前是否有一个进程正在使用给定的 pid 运行。我开始怀疑存在竞争条件,即在进程启动后不久,有一个小的时间窗口,即使实际上有一个进程正在运行,kill(pid, 0) 也不会返回零。
这是一个已知的问题?当 pid 实际存在但刚刚启动时,kill() 是否会返回非零值?如果 kill() 不能可靠地测试是否存在,是否有更好的方法来执行此测试?
我在 Centos 4 上并在我的 C++ 程序中使用 kill(pid, 0) 来检查当前是否有一个进程正在使用给定的 pid 运行。我开始怀疑存在竞争条件,即在进程启动后不久,有一个小的时间窗口,即使实际上有一个进程正在运行,kill(pid, 0) 也不会返回零。
这是一个已知的问题?当 pid 实际存在但刚刚启动时,kill() 是否会返回非零值?如果 kill() 不能可靠地测试是否存在,是否有更好的方法来执行此测试?