C中自动stdout缓冲区刷新的规则是什么?
我只是好奇应该满足哪些条件来自动刷新stdout缓冲区。
首先,我很困惑这个伪代码不会在每次迭代时打印输出:
while (1) { printf("Any text"); sleep(1);}
但如果我添加换行符,它会。
经过几次实验,我发现在我的机器上stdout缓冲区被刷新:
当我输入1025个字符或更多字符时;
当我读到标准时;
当我将换行符添加到stdout时;
第一个条件是完全清楚的 - 当缓冲区已满时,应该刷新它。第二个也是合理的。但为什么换行符导致潮红?其他隐含的条件是什么?
白衣染霜花
一只名叫tom的猫
慕斯709654
相关分类