wait()系统调用 - 孩子忽略了这个吗?

时间:2013-04-20 00:35:29

标签: c concurrency wait system-calls

所以我在修改期间看过以下代码。我知道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);
       }

1 个答案:

答案 0 :(得分:0)

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