博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
APUE第五章学习扎记之标准IO的缓冲机制的理解
阅读量:5780 次
发布时间:2019-06-18

本文共 538 字,大约阅读时间需要 1 分钟。

hot3.png

标准的IO是自带缓冲的。这一点避免了应用程序需要考虑缓冲这一点带来的麻烦,而其最具迷惑的也正是这缓冲。

APUE课本中提到标准IO提供了三种类型的缓冲(全缓冲、行缓冲和不带缓冲),弄清楚其特征尤为重要。

ISO C要求下列缓冲特征:

1)当且仅当标准输入和标准输出并不涉及交互式设备时,它们才是全缓冲的;

2)标准出错绝不会是全缓冲的。

对于1),我们可以这样理解:只要标准输入和输出改变了其流向,不再与键盘或终端进行输入或者输出时,它们就是全缓冲的。

但是,我们并不知道当标准输入和输出涉及到交互式设备时它们是行缓冲还是不带缓冲,同时也不知道标准出错是行缓冲还是不带缓冲。很多系统默认使用以下缓冲方式:

(1)标准出错不带缓冲;

(2)如若是涉及终端设备的其他流,则它们是行缓冲的;否则是全缓冲的。

怎么理解(2)呢?首先,我们可以知道:凡是跟终端设备(keyboard或者terminal)有关的流都是行缓冲的;凡是跟终端设备无关的流都是全缓冲的。

对于行缓冲有点要注意的:

行缓冲的标准IO执行IO操作(输入或者输出)有两种情况:

a)遇到了换行符;

b)填满了行缓冲区。

转载于:https://my.oschina.net/DanielLee/blog/178136

你可能感兴趣的文章
手动创建SWAP分区
查看>>
磁盘管理-quota
查看>>
刚毕业从事java开发需要掌握的技术
查看>>
浅析Arm Linux操作系统调用流程详细解析 .
查看>>
CSS Custom Properties 自定义属性
查看>>
nagios自定义监控系统磁盘脚本
查看>>
vim
查看>>
linux sort命令详解
查看>>
压缩目录中部分文件的脚本
查看>>
windows7中如何查看一个端口正在被占用
查看>>
Linux学习第六周作业
查看>>
Windows Server 2008 R2换SID要注意
查看>>
【服务器搭建环境配置】jdk安装 ubuntu mac
查看>>
swift交付应用的坑
查看>>
我去,自己写的自己都不能看。走了。
查看>>
This system is not registered with RHN
查看>>
python常用模块
查看>>
Window Server 2008 R2 在Active Directory域中不能更改服务器密码策略
查看>>
struts2如何进行权限控制
查看>>
SPARC-T5 安装 ORACLE 10G
查看>>