执行此程序时创建了多少个子进程?

时间:2019-10-30 23:00:12

标签: c fork parent-child child-process

我被困在代码pid = fork();的行上,在此之前我了解到创建了2个子进程,但是请澄清一下,直到到达pid=fork();行时,前一个子进程被擦除并且pid将再次从0开始分叉,还是只是继续与2个孩子一起分叉?

void main() {
int pid = fork();
if(pid != 0)
    fork();
pid = fork();
if(pid == 0)
    fork();
fork();
exit(0);
 }

1 个答案:

答案 0 :(得分:1)

如果fork()成功,它将向子级返回0,并向父级返回进程ID。因此对于父母来说,pid!= 0,对于孩子来说,就是pid!= 0。 在第一个if之后,在

之前
pid = fork()

行。有3个过程。然后,这3个进程分别创建一个新的子进程,然后依次创建另一个子进程。最后,所有进程都产生一个子进程。如果fork()均未失败,这将为我们提供(3 + 3 + 3)* 2 = 18个进程。