stream

    在《UNIX高级环境编程》中提到流的概念,觉得有地模糊,因此有必要做一个梳理。

1、标准I/O流

    系统调用I/O的操作是围绕文件描述符进行的,而标准I/O库的操作是围绕stream进行的。当使用标准I/O库打开或者创建一个文件时,已经使一个stream和一个文件关联[1]P109。

    流的定向有两种:宽定向字节定向。宽定向的流可以传输多个字节的字符集;而字节定向的流只能传输但字节的字符集,比如ASCII字符集[1]P109。

    stream是可带缓冲区的[1]P110(FILE对象包括用于该流的缓冲区指针...),也可不带缓冲[1]P111(标准I/O库要求从(a)一个不带缓冲的流...)。因此,标准I/O有三种类型的缓冲:全缓冲、行缓冲、不带缓冲。

    例如,标准出错流stderr是不带缓冲的,这使得出错信息可以尽快显示出来,而不管它们是否含有一个换行符。

2、STREAM I/O

    STREAM I/O是系统V的组成部分,后来被Single UNIX Specification标准化为XSI STREAM选项。这是有区别于上面的标准I/O流的[1]P109。


参考资料

[1]《UNIX环境高级编程》2nd

[2]

你可能感兴趣的:(stream)