#include<stdio.h> #include<unistd.h> void main() { pid_t pid1,pid2; pid1=fork(); pid2=fork(); if(pid1<0) printf("Fork Failed"); else if(pid1==0) { printf("[b]"); } else { wait(NULL); printf("[a]"); } if(pid2<0) printf("Fork Failed"); else if(pid2==0) { printf("[c]"); } else { wait(NULL); exit(0); } } 运行结果如下: [root@localhost liveuser]# ./test3_1 [a][c][b][c][b][a][root@localhost liveuser]#
一共是创建了4个进程,其中1个main,1个pid1(其父进程为main),2个pid2(分别由main和pid1创建,这里为了方便讨论称为pid2_1和pid2_2)。 main会输出1个[a],pid1会输出1个[b],pid2_1会输出1个[a]和1个[c],pid2_2会输出1个[b]和1个[c],这个分析结果和我的输出结果完全吻合,应该没问题。