博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【C】——fread函数和read函数的区别
阅读量:7110 次
发布时间:2019-06-28

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

1,fread是带缓冲的,read不带缓冲. 

2,fopen是标准c里定义的,open是POSIX中定义的. 
3,fread可以读一个结构.read在linux/unix中读二进制与普通文件没有区别. 
4,fopen不能指定要创建文件的权限.open可以指定权限. 
5,fopen返回指针,open返回文件描述符(整数). 
6,linux/unix中任何设备都是文件,都可以用open,read.
如果文件的大小是8k。
你如果用read/write,且只分配了2k的缓存,则要将此文件读出需要做4次系统调用来实际从磁盘上读出。
如果你用fread/fwrite,则系统自动分配缓存,则读出此文件只要一次系统调用从磁盘上读出。
也就是用read/write要读4次磁盘,而用fread/fwrite则只要读1次磁盘。效率比read/write要高4倍。
如果程序对内存有限制,则用read/write比较好。
都用fread 和fwrite,它自动分配缓存,速度会很快,比自己来做要简单。如果要处理一些特殊的描述符,用read 和write,如套接口,管道之类的
系统调用write的效率取决于你buf的大小和你要写入的总数量,如果buf太小,你进入内核空间的次数大增,效率就低下。而fwrite会替你做缓存,减少了实际出现的系统调用,所以效率比较高。
如果只调用一次(可能吗?),这俩差不多,严格来说write要快一点点(因为实际上fwrite最后还是用了write做真正的写入文件系统工作),但是这其中的差别无所谓。

转载地址:http://sjvhl.baihongyu.com/

你可能感兴趣的文章
js prototype 。 网上摘抄
查看>>
Fastdfs安装心得
查看>>
sql入门
查看>>
统一设置Eclipse编码
查看>>
zabbix 修改默认的/zabbix 斜杠
查看>>
Centos vmware克隆系统后无法启动网卡
查看>>
Linux下日志(Log)服务器/客户端配置实验
查看>>
python高效计算2的次方(位左移)和整数与2的次方的乘积
查看>>
正则表达式语法
查看>>
Cisco交换机密码破解方法
查看>>
使用VS2010中 编码的UI 测试 进行UI自动化测试
查看>>
IOS UITableView 使用总结
查看>>
play 源码分析
查看>>
Log4j针对不同包指定level
查看>>
Android中怎么启动关闭Service及功能解释
查看>>
SpringBoot入门八,添加定时任务
查看>>
SpringMVC springMVC的拦截器
查看>>
目录与文件属性——《Unix/Linux编程实践教程》读书笔记
查看>>
Spring中的自动装配(AutoWire)
查看>>
016,spring boot集成Mybatis之多数据源
查看>>