如何在c中创建proc树

时间:2014-05-15 13:44:11

标签: c process tree proc

我有这个数字数组,告诉每个父进程必须进行多少子进程,或者说结构树的结构是什么。

例如,如果数组包含1 4 0 0 3,则proc树看起来像这样 http://shrani.si/f/S/IW/8HrGEVJ/proctree.jpg

我认为它可以通过递归来解决,但我不知道如何读取数组并确定我应该在哪里以及有多少子句。另外,如果您的代码模板如下所示,如何从父母中创建更多子项:

void recTreeProc(){

    /* create process */
    pid_t pid;
    pid = fork();

    if (pid == -1) {
            /* error */
            perror("fork failed");
            exit(EXIT_FAILURE);
    }

    else if (pid == 0) {
            /*  child process */
            //call recursion?
    }
    else {
            /* parent process */
            //wait for all the children to execute
            int status;
            (void)waitpid(pid, &status, 0);

    }

}

1 个答案:

答案 0 :(得分:1)

我无法帮助您实现树和数组的实现代码,因为我没有得到值的含义,但对于多个孩子,您可以尝试:

void recTreeProc() {

  /* create process */
  pid_t pid;
  int n = 0;
  int cpid[CHILD_NB];

  do {
     pid = fork();
     if (pid == -1) {
        perror("fork failed");
        exit(EXIT_FAILURE);
     }
     else if (pid) {
        cpid[n];
     }
     n++;
  } while(n < CHILD_NB && pid); // I want CHILD_NB childs
  if (!pid) {
   /* childs */
  }
  else {
        /* parent process */
        //wait for all the children to execute
        int status[CHILD_NB];
        n = 0;
        while (n < CHILD_NB) {
          (void)waitpid(cpid[n], &status[n], 0);
          n++;
        }
  }
}