当前位置: 技术问答>linux和unix
关于标准IO操作的一个问题
来源: 互联网 发布时间:2016-11-07
本文导语: 我在一些资料上看到,stdin流是一个基于行缓冲的流,但是我在自己的linux下测试后,通过stdin->_flags发现这个stdin流在我的操作系统中默认是全缓冲的流,这样的话,是不是当我在标准输入中输入字符的时候,即时我...
我在一些资料上看到,stdin流是一个基于行缓冲的流,但是我在自己的linux下测试后,通过stdin->_flags发现这个stdin流在我的操作系统中默认是全缓冲的流,这样的话,是不是当我在标准输入中输入字符的时候,即时我按了回车(即'n
)的时候,io函数也不会立刻被调用?但我在测试的时候,标准输入中一旦输入了'n'之后就立刻进行IO操作了呢?这完全就跟行缓冲的情况是一样的。请知道原理的同学分享下,谢谢
)的时候,io函数也不会立刻被调用?但我在测试的时候,标准输入中一旦输入了'n'之后就立刻进行IO操作了呢?这完全就跟行缓冲的情况是一样的。请知道原理的同学分享下,谢谢
|
这个还是看标准吧。
按照APUE上的说法:
ISO C requires the following buffering characteristics.
Standard input and standard output are fully buffered, if and only if they do not refer to an interactive device.
Standard error is never fully buffered.
Most implementations default to the following types of buffering.
Standard error is always unbuffered.
All other streams are line buffered if they refer to a terminal device; otherwise, they are fully buffered.
按照APUE上的说法:
ISO C requires the following buffering characteristics.
Standard input and standard output are fully buffered, if and only if they do not refer to an interactive device.
Standard error is never fully buffered.
Most implementations default to the following types of buffering.
Standard error is always unbuffered.
All other streams are line buffered if they refer to a terminal device; otherwise, they are fully buffered.