日期:2014-05-16  浏览次数:20538 次

一个fork的问题
pid_t pid1, pid2, pid3;
pid1 = fork();
pid2 = fork();
pid3 = fork();
printf("%d, %d, %d\n", pid1, pid2, pid3);

假设第一次打印:1001,102,1003
请问一共打印多少次?每一次打印的内容是多少?

------解决方案--------------------
1次fork就会由一个进程变为2个,这样一共会产生8个进程,一共会打印8次,fork对父子进程的返回值不一样,这个需要变化下
------解决方案--------------------
pid1 = fork();
pid2 = fork();
pid3 = fork();

这个问题是递归的,这里要产生N多个进程,简单算一下:

父进程产生pid1,pid1再fork,fork的再fork,pid1再fork。
父进程产生pid2,pid2再fork。
父进程产生pid3。

一共有1+1+1+1+1+1+1+1=8个