- 1、本文档共35页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
linu文件读写
O _ R D O N L Y O _ W R O N L Y O _ R D W R O _ A P P E N D O _ N O N B L O C K O _ S Y N C O _ A S Y N C 只读打开 只写打开 读/写打开 写时都添加至文件尾 非阻塞方式 等待写完成 异步I / O 文件状态 标志说明 孵弦铸猖沸顾汰绍暇削医泌霜该岩酚币屋振言败封朱凸凑硼精球啦佯香哆linu文件读写linu文件读写 F_SETFL 将文件状态标志设置为第三个参数的值(取为整型值)。可以更改的几个标志是:O _ A P P E N D,O _ N O N B L O C K,O _ S Y N C和O _ A S Y N C。 F_GETOWN 取当前接收S I G I O和S I G U R G信号的进程I D或进程组I D。 F_SETOWN 设置接收S I G I O和S I G U R G信号的进程I D或进程组I D。正的a rg指定一个进 程I D,负的a rg表示等于a rg绝对值的一个进程组I D。 姐辣君所梅缘挫审均夯卓辐挣圭褒谓靡竟空蝇邑精访乌汽蔑硫数盼雇旺韵linu文件读写linu文件读写 2.9.2 用fcntl给文件加锁 当多个用户共同使用、操作一个文件的时候,linux通常采用的方法是给文件上锁,来避免共享资源产生竞争的状态。 文件锁包括建议锁和强制性锁。建议性锁要求上锁文件的进程都要检测是否有锁存在,并尊重已有的锁。强制性锁由内核和系统执行的锁。 Fcntl不仅可以实施建议性锁而且可以实施强制性锁。 蜜妥聊庙箔狼拽椭弟伐镍亿遗亡既况黍芍刹钒眠暇凉疤芜浆误籽维胎首蜜linu文件读写linu文件读写 2.9.3 fcntl函数格式 #include sys/types.h #include unistd.h #include fcnt1.h int fcnt1(int filedes, int cmd,... struct flock flockptr ) ; struct flock 结构 涡瞳怜争粒丘队顿抗掇彻峨萤醒颅聂动迄聂必团叔划慷脂逝琉盼禁估救镁linu文件读写linu文件读写 2.9.4 f l o c k结构说明: 所希望的锁类型:F_RDLCK(共享读锁)、F_WRLCK(独占性写锁)或F_UNLCK(解锁一个区域) 要加锁或解锁的区域的起始地址,由l_start和l_whence两者决定。l_stat是相对位移量(字节),l_whence则决定了相对位移量的起点。 区域的长度,由l_len表示。 尼塔侄澄拐遭鞘缅讨屏卢驴权钦殊咕月岗缕轰辈厄震怎滦申噎雅沽眶梢延linu文件读写linu文件读写 1、Linux系统调用与文件I/O 1.1、 Linux系统调用 所谓系统调用是指操作系统提供给用户程序的一组“特殊”接口,用户程序可以通过这组“特殊”接口来获得操作系统内核提供的特殊服务。 在linux中用户程序不能直接访问内核提供的服务。为了更好的保护内核空间,将程序的运行空间分为内核空间和用户空间,他们运行在不同的级别上,在逻辑上是相互隔离的。 马昼叁嘴漏绎逛异戊享邢咆贸副赁梆滦低沪饯粮藐埠遂溪朝恰傈荒喝晤李linu文件读写linu文件读写 2.1、用户程序接口(API) 在linux中用户编程接口(API)遵循了在UNIX中最流行的应用编程界面标准—POSIX标准。这些系统调用编程接口主要通过C库(libc)实现的。 玻垮桥拟骆菊族诺那坷岂固嘲拂绪痕朽踏愈蛊瞧笋沈孜窑月俩旱削扇坟釉linu文件读写linu文件读写 内核空间 用户空间 系统调用 用户程序接口API 系统命令 图1 系统调用、API与系统命令之间的关系 苗涂蚕街俘童镀训丰查磅峰牢狐检浮沫倔缔侣汤端将迸成剐沫胖啤灾孤耗linu文件读写linu文件读写 2.1文件I/O介绍 可用的文件I / O函数——打开文件、读文件、写文件等等。大多数linux文件I / O只需用到5个函数:open、read、write、lseek 以及close。 不带缓存指的是每个r e a d和w r i t e都调用内核中的一个系统调用。这些不带缓存的I / O函数不是ANSI C的组成部分,但是P O S I X 组成部分。 捂胜苞骋广册玩考硫域沏媚庆辑腕戳搽授隆经姐豁柴杨熔的缕效夯恋生下linu文件读写linu文件读写 2.2 文件描述符 对于内核而言,所有打开文件都由文件描述符引用。文件描述符是一个非负整数。当打开一个现存文件或创建一个新文件时,内核向进程返回一个文件描述符。当读、写一个文件时,用o p e n或c r e a t返回的文件描述符标识
文档评论(0)