【发布时间】:2014-05-15 13:44:10
【问题描述】:
我有这个数字数组,它告诉每个父进程必须创建多少个子进程,或者更确切地说,树的结构是什么。
例如,如果数组包含 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);
}
}
【问题讨论】:
-
你的例子是不够的。根有一个孩子,那个节点有4个孩子,但是为什么3个孩子挂在第三个节点上?如果数组中的下一个整数是 2,那么 2 个子节点会位于具有 3 个子节点的节点的兄弟节点上,还是会是后代? (如果有标签就更容易讨论图表了!)
-
0 0 3,表示这四个节点的第一个和第二个没有后代,第三个有三个