首页
Web开发
Windows程序
编程语言
数据库
移动开发
系统相关
微信
其他好文
会员
首页
>
其他好文
> 详细
标准文件IO详解(三)---缓冲区详解
时间:
2016-10-01 10:27:43
阅读:
151
评论:
0
收藏:
0
[点我收藏+]
标签:
标准文件 IO 相比于文件 IO 来说,在用户层中增加了一个用户缓冲区。也就是说在使用标准IO 来操作文件的时候,都会经过此用户层的缓冲区。比如使用标准 IO 来向文件中写入内容的时候,首先内容会首先被写入到用户缓冲区中,等到 缓冲区满 或者 刷新缓冲区 的时候在调用文件 IO 将内容写入到内核中的磁盘缓冲区中。
====================================================
用户缓冲区的类型:
全缓冲
此种类型的缓冲只有在缓冲区满的时候才会调用实际的文件 IO 进入内核态操作。除了涉及到终端设备文件的流,其它文件流默认基本都是全缓冲。
行缓冲
此种类型的缓冲在缓冲区满或者遇到 \n 的时候才会调用实际的文件 IO 进入内核态操作。当流涉及到终端设备的时候就是行缓冲,比如标准输入流和标准输出流。如果对标准输入流或者输出流进行重定向到某个文件的时候,该流就是全缓冲的。
无缓冲
没有缓冲区。直接调用文件 IO 进入内核态操作。标准错误流默认就是无缓冲的。
====================================================
如果对于某文件我们不想要使用其默认的缓冲区类型,c库还提供了setvbuf函数给我们以便去修改文件流默认的缓冲区类型。
函数原型:
函数参数:
stream:要改变缓冲区的文件流指针
buf:设置的缓冲区首地址
mode:设置的缓冲区类型,当设置为无缓冲时,参数buf和size会被忽略
size:设置的缓冲区的大小
返回值:
调用成功时返回 0
调用失败返回 非0值
====================================================
mode参数可以是以下几个宏之一:
_IOFBF:全缓冲;如果参数 buf 为NULL,则系统会自动分配适当大小的缓冲区。否则参数 buf 被设置为缓冲区的首地址。
_IOLBF:行缓冲;如果参数 buf 为NULL,则系统会自动分配适当大小的缓冲区。否则参数 buf 被设置为缓冲区的首地址。
_IONBF:无缓冲;函数会忽略 buf 和 size 这两个参数。
标准文件IO详解(三)---缓冲区详解
标签:
原文地址:http://www.cnblogs.com/frank-yxs/p/5925492.html
踩
(
0
)
赞
(
0
)
举报
评论
一句话评论(
0
)
登录后才能评论!
分享档案
更多>
2021年07月29日 (22)
2021年07月28日 (40)
2021年07月27日 (32)
2021年07月26日 (79)
2021年07月23日 (29)
2021年07月22日 (30)
2021年07月21日 (42)
2021年07月20日 (16)
2021年07月19日 (90)
2021年07月16日 (35)
周排行
更多
分布式事务
2021-07-29
OpenStack云平台命令行登录账户
2021-07-29
getLastRowNum()与getLastCellNum()/getPhysicalNumberOfRows()与getPhysicalNumberOfCells()
2021-07-29
【K8s概念】CSI 卷克隆
2021-07-29
vue3.0使用ant-design-vue进行按需加载原来这么简单
2021-07-29
stack栈
2021-07-29
抽奖动画 - 大转盘抽奖
2021-07-29
PPT写作技巧
2021-07-29
003-核心技术-IO模型-NIO-基于NIO群聊示例
2021-07-29
Bootstrap组件2
2021-07-29
友情链接
兰亭集智
国之画
百度统计
站长统计
阿里云
chrome插件
新版天听网
关于我们
-
联系我们
-
留言反馈
© 2014
mamicode.com
版权所有 联系我们:gaon5@hotmail.com
迷上了代码!