【问题标题】:Tree Fork() Recursion树叉()递归
【发布时间】:2017-09-16 04:47:35
【问题描述】:

我正在尝试使用 Fork () 的递归函数运行下面的树。但是,我只能生成前 3 个孩子,对于树的其余部分,我失去了正确的引用。

void process_tree(int level, char *child[], int n){
int i;
int index = child[n];
int myP;
int status;

if(n >= level){
   exit(0);
} else {
    for (i=0; i < index; i++){
        myP = fork();
        switch(myP){
            case -1:
                printf("fork failed\n");
                break;
            case 0:
                printf("Son - %d de %d\n\n", getpid(), getppid());
                n++;
                process_tree(level, child, n);
                break;

            default:
                break;
        }
    }
    for (i=0; i< index; i++){
        wait(&status);
    }
}
}

int main(){
int level = 4;
int n = 0;
int child [] = {3, 2, 1, 1};
printf("[Father] -> [%d]\n\n", getpid());
process_tree (level, child, n);
}

【问题讨论】:

    标签: c recursion tree fork


    【解决方案1】:

    您的递归终止似乎过早退出程序。对于递归,我通常使用“return”。

    【讨论】:

      猜你喜欢
      • 2016-04-19
      • 2014-03-29
      • 2010-12-07
      • 2020-09-15
      • 1970-01-01
      • 1970-01-01
      • 2011-05-08
      • 2016-07-20
      • 2014-01-02
      相关资源
      最近更新 更多