码迷,mamicode.com
首页 > 其他好文 > 详细

带缓冲的IO和不带缓冲的IO

时间:2014-05-07 17:13:03      阅读:284      评论:0      收藏:0      [点我收藏+]

标签:int   get   文件   c   数据   使用   

文件描述符:

文件描述符是一个小的非负整数,是内核用来标识特定进程正在访问的文件

 

标准输入/输出/出错:

shell为每个程序打开了三个文件描述符,STDIN_FILEON,STDOUT_FILEON,STDERR_FILEON,默认这三个文件描述符都链向终端

 

不带缓冲的IO:

函数open read write lseek close提供了不用缓冲的IO。这些函数都使用文件描述符

size_t read(int fd,void *buf,size_t count)

从fd标识的文件中一次读取count字节的字符到buf,返回一次读取的字节数,小于等于count

size_t write(int fd,const void *buf,size_t count)

从buf中一次写count字节到fd标识的文件中,返回一次写入的字节数,小于等于count

 

所谓不带缓冲是指用户层没有缓存,通过系统调用直接对磁盘文件进行读写,但是对于内核来说,还是进行了缓存,内核现将数据写到内核缓冲存储器中,当缓冲存储器溢出时再进行实际的IO操作

 

标准IO(带缓冲的IO)

标准IO通过库函数提供了无缓冲IO的带缓冲IO接口

在用户层建立一个流缓存区,库函数向流缓存区读写数据,流缓存区溢出时进行系统调用,即再调用无缓冲的IO

fwrite fread puts gets是标准IO

 

无缓冲的IO操作数据流向路径:数据——内核缓存区——磁盘

标准IO操作的数据流向:数据——流缓存区——内核缓存区——磁盘

 

带缓冲的IO和不带缓冲的IO,布布扣,bubuko.com

带缓冲的IO和不带缓冲的IO

标签:int   get   文件   c   数据   使用   

原文地址:http://www.cnblogs.com/buptlyn/p/3712715.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!