此问题在此处已有答案:
printf anomaly after "fork()"(3个答案)
23天前关闭
gcc version 11.4.0(Ubuntu 11.4.0-1ubuntu1~22.04)
也在一些在线编译器上进行了测试(我知道它们可能不是一个可靠的选择)
测试(对比例1和例2)
实施例1
#include <stdio.h>
#include <unistd.h>
int main(void) {
printf("before-fork\n");
int a;
fork();
printf("%p\n", (void *)&a);
return 0;
}
字符串
输出1
before-fork
0x7fff58cd3324
0x7fff58cd3324
型
示例2(仅将printf("before-fork\n")
中的“\n”替换为空格)
输出2
before-fork 0x7ffce0196bb4
before-fork 0x7ffce0196bb4
型
预期行为
输出1
这是一个bug吗?如果不是,那么原因是什么?
1条答案
按热度按时间bbuxkriu1#
这是一个bug吗?
号
若否,原因为何?
stdout
输出(在本例中默认)line 缓冲在进程本地内存中。缓冲区的内容在换行符处刷新。