c - wait() 系统调用 - child 会忽略它吗?

标签 c concurrency wait system-calls

所以我在修改过程中看到了以下代码。我知道 wait() 会导致父级等待子级停止,但我对此有几个问题。

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

其次,当子进程继续执行并进入 wait() 时,会发生什么?是否因为没有什么可等待而被忽略?

       #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);
       }

最佳答案

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

关于c - wait() 系统调用 - child 会忽略它吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16115321/

相关文章:

在 cmd 提示符下在 Vista 中编译 gtk+ & gtkmm

c - 嵌入式 C : Different processes sending/receiving data to same input/output

java - 使用触发器在 mysql 行中并发更新

Python - 等待远程系统启动的最佳方式

c - 在 Debug模式下获得警告但在 Release模式下没有(我会得到未定义的行为吗?)

c - 有哪些替代方法可以从 Haskell 共享库返回包含空值的字符串以在 C 中使用?

java - Callable 和 Future 返回异常

Java Fork 加入池卡住了

java - 等到所有线程在java中完成它们的工作

javascript - 如何在一帧中获取JavaScript以等待页面在第二帧中加载