Stream(流)是对输入输出设备的一种抽象,底层库(如 glibc、Java 标准库等)以流的形式提供高级 API,方便开发者使用。
Stream Buffering
Stream buffering 是指应用程序在处理流时,不一个一个字节处理,而是累积到一定量再做处理。特别地:
- 对于读,等输入设备积攒了一定量的数据时,API 再批量返回数据。比如从网卡读数据
- 对于写,等写入的内容积攒到一定量,再触发批量写入。用
open
打开一个常规文件,默认是 buffered 的
一个流有几种 buffering 形式:
unbuffered | 传输的内容会尽可能快被读取或者被发出;Linux 中 stderr 默认为 unbuffered |
---|---|
line buffered | 一旦遇到换行符便即刻传输;Linux 中 stdin 默认为 line buffered |
fully buffered | 也叫 blocked buffered,或者简单的 buffered;表示累积到一定量再传输;Linux 中 stdout 默认为 buffered |
参考: