0

所以我在修订过程中看到了以下代码。我知道 wait() 会导致父母等待孩子停下来,但我对此有一些疑问。

首先,当孩子被创建时,我的假设是否得到纠正,即父母继续,改变 x 值,然后在 if 语句之后等待?

其次,当孩子继续执行并开始等待()时,会发生什么?这是否被忽略了,因为它没有什么可等待的?

       #include <sys/types.h>
       #include <stdio.h>
       #include <unistd.h>
       int main() {
         int x = 1;
          pid_t pid = fork();
         if (pid == 0) {
             x = x * 2;
         } else if (pid > 0) {
             x = 3;
         }
         wait();
         // Print the value of x to the console
         printf("%d\n",x);
       }
4

1 回答 1

0

您可以在子执行开始时尝试调用 wait()。一旦在这个过程中没有孩子,调用就会被简单地忽略。

于 2013-04-20T00:52:15.707 回答