我刚刚用C
写了一个简单的演示程序,来看一下fork()
是如何工作的,但是我遇到了一些不理解的问题。在这个例子中:
void fork2()
{
printf("A");
fork();
printf("B");
}
输出结果为
ABAB
,但在这个例子中:void fork2()
{
printf("A\n");
fork();
printf("B\n");
}
输出结果是
ABB
(当然是分开的行)。第二个输出有意义,因为如果我正确理解了fork()
,它会生成一个新的子进程,从fork()
发生的地方开始执行(所以在这种情况下是printf("B\n");
)。我不理解的是,为什么在包含换行符时输出结果会不同。