ANSI文件IO管理以及POSIX文件及目录管理

ANSI文件IO管理

ANSI标准下的C库函数建立在底层系统调用之上,即C函数库文件访问函数的实现中使用了低级文件IO系统调用。
ANSI标准的C库中的文件处理函数`为了减少系统调用的次数,采用了缓冲区机制,这样就可以减少与磁盘的交互次数,提高效率。ANSI标准为实现这一特性,采用了流的概念,在流的实现中,缓冲区是最重要的单元。根据需求的不同分为全缓冲区,行缓冲区,以及无缓冲区3种。
全缓冲区: 默认大小为BUFSIZ(8192),在缓冲区满或者调用fflush()函数的时候,才进行系统IO调用,用于普遍磁盘文件的流都使用的是全缓冲区。
行缓冲区: 在遇到换行符或者缓冲区满的时候,行缓冲才刷新,部分系统默认的是128字节。
无缓冲区:标准IO库不对字符进行缓存,如果标准IO函数些若干字符到不带缓冲区的流中,则相当于用write()系统调用函数,直接将这些字符写至文件中,标准出错流stderr,则是无缓冲区。
用户可以通过setbuf()以及setvbuf()来自己设定缓冲区,其中setbuf()函数的原型是:
setbuf(FILE* _restrct_stream,char*_restrict_buf);
第一个参数是流对象,第2个参数指向的是一个大小为BUFSIZ的缓冲区。
setvbuf(FILE* _restrct_stream,char*_restrict_buf,int mode,size_t n)
第一个参数是流对象,第2个参数是一个buffer,第3个参数是buffer的类型,第4个参数是buffer的大小。其中第3个参数可以取值0,1,2ÿ

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值