假定check_if_pid_exists(pid)
在具有这样的 pid 的进程存在(但可能尚未运行)时返回true,而在没有任何具有这样的 pid < / em>,当fork()
返回子元素 pid 时,父代码中是否有竞争条件的机会,但是内核没有机会初始化数据结构,因此check_if_pid_exists(child)
返回false?还是从fork()
返回后,我们可以保证check_if_pid_exists(pid)
返回true?
pid_t child = fork();
if (child == 0) {
/* here the child just busy waits */
for (;;)
;
}
if (child > 0) {
/* here the parent checks whether child PID already exists */
check_if_pid_exists(child);
}