#include <stdio.h>
#include <unistd.h>
int main(void)
{
int i;
for (i = 0; i < 2; i++) {
fork();
printf("-");
}
return 0;
}
该程序的结果是8“ - ”:“--------”。但如果我改变'printf(“ - ”);'进入'printf(“ - \ n”);',该程序的结果将变为6“ - ”:“ - \ n- \ n- \ n- \ n- \ n- \ n”。谁能告诉我为什么?
答案 0 :(得分:1)
printf
写入行缓冲的stdout
流。缓冲区是属于流的内存块,用于临时保存流数据。这样做是为了提高效率,因为与内存操作相比,文件和控制台I / O速度较慢。行缓冲意味着只有在输出换行符之前,字符才会保存在缓冲区中。