一尘不染

在C语言中,完全缓冲,行缓冲和非缓冲是什么意思?

linux

我碰到一行,cat命令的输出已完全缓冲。这是什么意思?


阅读 649

收藏
2020-06-02

共1个答案

一尘不染

在线C11标准 7.21.3 /
3:

当流没有 缓冲时 ,字符应尽快从源或目标出现。否则,字符可能会作为块被累积并传输到主机环境或从主机环境传输。当流被 完全缓冲时
,打算在填充缓冲区时将字符作为块与主机环境进行传输。当流被 行缓冲时
,当遇到换行符时,字符打算作为块与主机环境进行传输。此外,当填充缓冲区,在无缓冲流上请求输入或在需要从主机环境传输字符的行缓冲流上请求输入时,打算将字符作为块传输到主机环境。
。对这些特性的支持是实现定义的,并且可能会受到setbufsetvbuf功能的影响。

7.21.3 / 7:

在程序启动时,预定义了三个文本流,无需显式打开它们- 标准输入 (用于读取常规输入), 标准输出 (用于写入常规输出)和 标准错误
(用于写入诊断输出)。最初打开时,标准错误流未完全缓冲;当且仅当可以确定该流不引用交互式设备时,标准输入流和标准输出流才被完全缓冲。

2020-06-02