首页 > 其他分享 >如果你也面试03-全缓冲 行缓冲 无缓冲

如果你也面试03-全缓冲 行缓冲 无缓冲

时间:2022-10-09 13:38:22浏览次数:50  
标签:03 面试 缓冲 标准 IO flush 缓冲区 1000


首先介绍一下UNIX里面关于标准IO的几种缓冲机制:

1、全缓冲 。全缓冲指的是系统在填满标准IO缓冲区之后才进行实际的IO操作;注意,对于驻留在磁盘上的文件来说通常是由标准IO库实施全缓冲。比如往 磁盘文件写东西,就是全缓冲。
2、行缓冲 。在这种情况下,标准IO在输入和输出中遇到换行符时执行IO操作;注意,当流涉及终端的时候,通常使用的是行缓冲。比如 屏幕打印,就是行缓冲。

3、无缓冲 。无缓冲指的是标准IO库不对字符进行缓冲存储;注意,标准出错流stderr通常是无缓冲的。


术语 冲洗(flush) 就是 标准IO缓冲区的 写操作。


提供缓冲的目的是尽可能减少 调用read 和 write 的次数。


虽然有时会令人迷惑,不过这也是提高效率的方法。 举个生活中的例子, 比方你要把钱存到银行里, 无缓冲 就是 有一块钱 就去一次银行, 又两块也去一起,不管有多少钱,有就去,这样就很麻烦。  缓冲的意思是,比方缓冲大小是 1000元。 当你攒够一千的时候才去一次, 平时不足1000的就现在自己兜里积累着。 这样减少了去银行办理业务的时间,也就节约了时间。

冲洗或者刷新(flush) 就是说 虽然还没有装满缓冲区 ,但因为别的原因,很紧急,我要立即去把钱存进去 ,这时就主动调用一下flush。


标签:03,面试,缓冲,标准,IO,flush,缓冲区,1000
From: https://blog.51cto.com/u_15815563/5740224

相关文章