gpt4 book ai didi

c - 为什么所有子进程都执行主代码?

转载 作者:行者123 更新时间:2023-11-30 21:23:34 24 4
gpt4 key购买 nike

我有两个 child 和他的父亲的代码,但有一个问题,因为所有的 child (和父亲在 main 上执行代码)。

代码:

int main() {
switch (fork()) {
case 0: //child1
break;
default:
switch (fork()) {
case 0: //child2
break;
default: //father
break;
}
}
printf("hi\n");
}

输出:

hi
hi
hi

最佳答案

当您使用 fork() 时,它会创建一个几乎完全相同的父进程副本,但 fork() 调用的返回值除外。它们都继续并执行所有相同的代码,除了依赖于该返回值的任何代码。

由于对 printf() 的调用没有条件,因此它将在父进程和子进程中执行。如果您希望它仅在特定进程中执行,则应将其放在 switch() 语句的该分支中。

关于c - 为什么所有子进程都执行主代码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43476618/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com