c-有else的fork()和没有else的有什么区别

  • 本文关键字:else 区别 fork c linux fork
  • 更新时间 :
  • 英文 :

#include <stdio.h>
#include <unistd.h>

int main(){
if(fork()>0){
printf("i am pn");
fork();
}    
else{
printf("i am cn");
}
}

输出是

i am p
i am c

否则输出为

i am p
i am c
i am c
i am c

我不能理解第二个叉在有else和没有else的时候做什么。

父进程派生一个新进程,由于子进程中的fork返回值为0,因此跳过if并打印i am c。父进程将打印i am p,并将再次分叉!第二个子项和父项现在将打印i am c三次。如果您保留else,则在if中运行的父级和第二个子级显然不会执行else块。

最新更新