先来看一道题
#include<stdio.h>
#include<unistd.h>
#include<assert.h>
int main()
{
for(int i = 0 ; i < 2 ; i++)
{
fork();
printf("A\n");
}
exit(0);
}
//这个输出多少个A呢
答案是输出六个A 看解析

这个题就有意思了
#include<stdio.h>
#include<unistd.h>
#include<assert.h>
int main()
{
for(int i = 0 ; i < 2 ; i++)
{
fork();
printf("A");
}
exit(0);
}
//这个输出多少个A呢
这个代码和上面那个代码就差了"\n" 输出会有什么不同呢?

“总不能因为这世上有人跟你道不同,你就不好好走自己的路”
本文通过两个示例代码探讨了C语言中fork函数与printf的使用,分析了包含换行符与不包含换行符的printf在多进程环境中的输出差异。在第一个例子中,由于缓冲区的影响,程序会输出六个'A'。而在第二个例子中,缺少换行符导致每次输出立即刷新缓冲区,输出结果与第一个例子不同。
907

被折叠的 条评论
为什么被折叠?



