gpt4 book ai didi

c - 在C中,如何创建多个子进程(不知道需要多少个)?

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

是否可以根据父进程中发生的情况创建多个子进程?例如,通过父进程中的计算,我决定需要 3 个子进程,可能是 4,5 或 6。然后最终一次将一个整数传递给子进程并从中获取退出值。有没有办法用 C 实现这个?

最佳答案

类似这样的事情:

int childs = 5; // I want 5 childs
pid_t pid;

while (childs > 0)
{
if ((pid = fork()) == -1)
return (1); // handle this error as you want
if (pid == 0)
break;
childs--;
}
// the child go there directly

您可以使用 pid_t 数组/列表来记住所有 child ,并使用 waitpid 检查他们的状态。

编辑:

以不同方式处理子项并用数组记住它们的方法:

int childs = 5; // I want 5 childs
pid_t pid[childs];
int i;

for (i=0; i < childs; ++i) {
if ((pid[i] = fork()) == -1)
return (1); // handle this error as you want
if (pid[i] == 0) {
break;
}
}
switch (i) {
case 0:
return(function0());
break;
case 1:
return(function1());
break;
case 2:
return(function2());
break;
case 3:
return(function3());
break;
case 4:
return(function4());
break;
default:
;
}

我不知道你到底想做什么,你也可以在条件中使用模(%)运算符来调用正确的函数。我在那里使用 return 是因为我们不想再留在 for 循环中,“functionx()”将完成整个新的流程工作。您也可以在函数中使用。

您现在拥有一个 pid_t 数组,因此您可以循环检查子级的状态。

关于c - 在C中,如何创建多个子进程(不知道需要多少个)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22165962/

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