gpt4 book ai didi

c++ - 多个 fork 不起作用

转载 作者:行者123 更新时间:2023-11-30 18:29:44 24 4
gpt4 key购买 nike

我正在尝试创建 5 个子级和 1 个父级。但父级会创建它们(至少 4 个。因为首先我们需要 fork ),但它会创建一堆子级。找不到我做错了什么。请问有什么想法吗?

child0=fork();//first process
if(child0>0)//Parent
{

//Create children
child1=fork();
child2=fork();
child3=fork();
child4=fork();
cout<<"i am child 0 "<<child0 <<" ";
cout<<"i am child 1 "<<child1;
cout<<"i am child 2 "<<child2;
cout<<"i am child 3 "<<child3;
cout<<"i am child 4 "<<child4;
wait(child0);
wait(child1);
wait(child2);
wait(child3);
wait(child4);
}
else if(child0<0)
{
printf("fork() failed!\n");
exit(1);
}
else
{
cout<<"i am child0";
exit(0);
}

最佳答案

每次 fork 后,进程数量都会增加一倍。这是你的代码:

child1=fork(); // we have two now
child2=fork(); // each one of them forks - we have 4
child3=fork(); // 8
child4=fork(); // 16

您需要检查fork的返回值。当它非0时,你在父级中,并且可以再次 fork 。如果它是 0,你是 child ,你不应该 fork() - 应该做你 child 的家务。

当您检查返回值时,您也可以检查它是否为 -1 - 这意味着 fork() 失败。尽管看起来令人难以置信,但我知道发生这种情况的生产系统。

关于c++ - 多个 fork 不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35659720/

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