我想知道,当我使用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。然后有一个孩子。它应该等不及?
我该怎么办?