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

时间:2014-03-04 07:51:10

标签: c linux process fork pipe

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

1 个答案:

答案 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数组,以便您可以循环检查子项的状态。