问题:从《Linux高级程序设计》中可以看出,终端肯定是有缓冲的。而标准输入输出流也是有缓冲的,那么标准输入输入重定向到一个终端的时候,那么两者的缓冲是什么关系呢?重定向到文件呢?
标准输入输出都是文件描述符。文件描述符本身只是一个整数,需要和缓冲区一起包装成文件流结构体。
如果标准输入输出重定向到终端,则终端的缓冲和标准输入输出流的缓冲应该是一个东西,文件流结构体将终端的缓冲和标准输入输出文件描述符联系在了一起。这时候标准输入输出流都是行缓冲,标准错误是无缓冲。
如果重定向到文件则标准输入输出都是全缓冲,错误还是无缓冲。
可以输出文件流结构体成员观察缓冲区设置。