- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
linuxread/write和fread/fwrite有什么区别
1fread是带缓冲的,read不带缓冲.
,
2,fopen是标准c里定义的,open是POSIX中定义的.
3,fread可以读一个结构.read在linux/unix中读二进制普通文件没有区
别.
4,fopen不能指定要创建文件的权限.open可以指定权限.
5,fopen返回指针,open返回文件描述符整(数).
6,linux/unix中任何设备都是文件,都可以用open,read.
如果文件的大小是8ko
你如果用read/write,且只分配了2k的缓存,则要将此文件读出需要做4
次系统调用来实际从磁盘上读出。
如果你用fread/fwrite,则系统自动分配缓存,则读出此文件只要一次系
统调用从磁盘上读出。
也就是用read/write要读4次磁盘,而用fread/fwrite则只要读1次磁
盘。效率比read/write要高4倍。
如果程序对内存有限制,则用read/write比较好。
都用fread和fwiite,它自动分配缓存,速度会很快,比自己来做要简单。如
果要处理一些特殊的描述符用read和write,如套接口,管道之类的
系统调用write的效率取决于你uf的大小和你要写入的总数量,如果uf
太小,你进入内核空间的次数大增,效率就低下。而fwhte会替你做缓
存,减少了实际浮现的系统调用,所以效率比较高。
如果只调用一次可(能吗?),这俩差不多,严格来说wHte要快一点点因(
为实际上fwiite最后还是用了write做真正的写入文件系统工作),但是这
其中的差别无所谓。
open(打开文件)
相关函数
read,write,fcntl,close,link,stat,umask,unlink,fopen
表头文件
#includesys/types.h
#includesys/stat.h
#includefcntl.h
定义函数
intopen(constchar*pathname,intflags);
intopen(constchar*pathname,intflags,mode_tmode);
函数说明
参数pathname指向欲打开的文件路径字符串。下列是参数flags所能使
用的旗标:
O_RDONLY以只读方式打开文件
O_WRONLY以只写方式打开文件
O_RDWR以可读写方式打开文件。上述三种旗标是互斥的,也就是不可
同时使用,但可下列的旗标利用OR(|)运算符组合。
O_CREAT若欲打开的文件不存在则自动建立该文件。
O_EXCL如果CLCREAT也被设置,此指令会去检查文件是否存在。文
件若不存在则建立该文件,否则将导致打开文件错误。此外,若
O_CREATO_EXCL同时设置,并且欲打开的文件为符号连接,则会
打开文件失败。
O_NOCTTY如果欲打开的文件为终端机设备时,则不会将该终端机当成
进程控制终端机。
O_TRUNC若文件存在并且以可写的方式打开时,此旗标会令文件长度
清为0,而原来存于该文件的资料也会消失。
O.APPEND当读写文件时会从文件尾开始挪移,也就是所写入的数据会
以附加的方式加入到文件后面。
O.NONBLOCK以不可阻断的方式打开文件,也就是无论有无数据读取
或者等待,都会即将返回进程之中。
O_NDELAY同O_NONBLOCK。
O.SYNC以同步的方式打开文件。
CLNOFOLLOW如果参数pathname所指的文件为一符号连接,则会令
打开文件失败。
CLDIRECTORY如果参数pathname所指的文件并非为一目录,则会令
打开文件失败。
此为Linux2.2以后特有的旗标,以避免一些系统安全问题。数mode
则有下列数种组合,惟独在建立新文件时才会生效,此外真正建文件时的
权限会受到umask值所影响
- 软件下载与安装、电脑疑难问题解决、office软件处理 + 关注
-
实名认证服务提供商
专注于电脑软件的下载与安装,各种疑难问题的解决,office办公软件的咨询,文档格式转换,音视频下载等等,欢迎各位咨询!
文档评论(0)