printf(" - ")和printf(" - \ n");

时间:2014-03-20 04:04:15

标签: c fork printf

#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”。谁能告诉我为什么?

1 个答案:

答案 0 :(得分:1)

printf写入行缓冲的stdout流。缓冲区是属于流的内存块,用于临时保存流数据。这样做是为了提高效率,因为与内存操作相比,文件和控制台I / O速度较慢。行缓冲意味着只有在输出换行符之前,字符才会保存在缓冲区中。