#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”。有人能告诉我为什么吗?
发布于 2014-03-20 13:21:54
printf写入行缓冲的stdout流。Buffer是属于流的内存块,用于临时保存流数据。这样做是为了提高效率,因为与内存操作相比,文件和控制台I/O比较慢。行缓冲意味着只有在输出换行符之前,字符才会保存在缓冲区中。
https://stackoverflow.com/questions/22523271
复制相似问题