是否可以根据父进程中发生的事情创建多个子进程?例如,通过我父进程中的计算,我已经确定我需要3个子进程,它可能是4,5或6.然后最终将一个整数传递给子进程并从中获取退出值。有没有办法在C中实现这个?
答案 0 :(得分:0)
这样的事情:
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的数组/列表记住您的所有孩子,并使用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:
;
}
我不知道你想要做什么,你也可以在条件中使用modulo(%)运算符来调用正确的函数。 我使用return返回那里因为我们不想再停留在for循环中,'functionx()'将会执行全新的流程工作。您也可以在函数中使用。
您现在拥有一个pid_t数组,以便您可以循环检查子项的状态。