1
6
单个文件流具有单个缓冲区。如果文件用于输入和输出,则必须确保在读写(或写读)操作之间执行适当的操作(fseek()或等效操作)。 标准通道的缓冲行为取决于平台。 通常,当输出到终端时,stdout是行缓冲的。但是,如果stdout要转到文件或管道而不是终端,它通常会切换到完全缓冲。 通常,stderr是行缓冲或无缓冲的,以确保看到错误消息(例如,即使程序即将崩溃)。 通常情况下,stdin是行缓冲的;这意味着您有机会编辑您的输入(错误上的退格等)。你很少会调整这个。同样,如果输入来自文件(或管道),则行为可能不同。 新打开的文件通常会被完全缓冲。如果设备是终端,则特定实现可能会将其更改为行缓冲。 你的假设——有两个缓冲区——是不正确的。 C99第7.19.3节规定:
所以,如前所述,stderr要么是无缓冲的 或 行缓冲(它没有完全缓冲)。 |
John Smith · Java按值对映射进行分组,其中值为列表 2 年前 |
r3k0j · 在c++中有没有办法将输入字符串转换为输入流? 2 年前 |
Ankur · 猛击猫管据称行为不端 2 年前 |
Ksenia Alexeeva · 什么是产量控制器。流动 2 年前 |
tooFastForSatan · 组合两个流并调用方法 2 年前 |
Logan Lee · 通过在jq中一对一比较两个流进行过滤 2 年前 |
Lev · 使用jOO按属性总结BigDecimal分组 6 年前 |