fork()系统调用实际上有多原子?

时间:2018-11-23 18:26:20

标签: c linux linux-kernel operating-system

假定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);
}

0 个答案:

没有答案