孩子何时以及如何杀人? (叉)

时间:2017-03-09 13:46:53

标签: c fork systems-programming

我想知道,当我使用fork并创建几个孩子时,孩子们正在创造几个孩子。

当孩子完成任务时我该怎么办?

void foo(){
    pid_t childpid = 0;
    .
    .
    .

    while (..){

        childpid = fork();

        if ( childpid == 0)

            if(...)
                foo();
            else
                /* Do something */


    }
    while(wait(NULL) > 0);

}

这是非常基本的代码,因为我正在尝试学习fork机制。

问题是:当孩子的任务完成后,我该怎么办?我应该使用exit(0)来杀死他还是break

如果我使用kill,valgrind会给我still reachable;如果我使用break,则进程不会死并返回main函数。

第二个问题:如果孩子进入第一个条件,它再次调用foo。然后有一个孩子。它应该等不及?

我该怎么办?

0 个答案:

没有答案