fork() - 你能解释一下这个输出

时间:2014-09-27 07:15:13

标签: process fork

我无法理解这个程序的输出。

#include<stdio.h>
#include<unistd.h>
void fork1()
{
 printf("\n %d L0", getpid());
 fork();
 printf("\n %d L1", getpid());
 fork();
 printf("\n %d Bye", getpid());
}

int main()
{
fork1();
return 0;
}  

输出

2625 L0

2625 L0

2625 L1

2625 Bye 2626 L1

2626 Bye 2625 L1

2627 Bye 2626 L1

2628 Bye

1 个答案:

答案 0 :(得分:0)

有三个要点:

  1. fork()将复制parent-process的缓冲区
  2. printf正在使用缓冲区
  3. printf将刷新缓冲区,同时附带&#34; \ n&#34;,EOF等
  4. 因此,如果您将printf更改为printf(&#34; XXXX \ n&#34;),事情会变得正常