1 / 4
文档名称:

Linux 编程中的文件锁之 flock.doc

格式:doc   大小:14KB   页数:4页
下载后只包含 1 个 DOC 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

Linux 编程中的文件锁之 flock.doc

上传人:小泥巴 2022/1/18 文件大小:14 KB

下载得到文件列表

Linux 编程中的文件锁之 flock.doc

相关文档

文档介绍

文档介绍:Linux 编程中的文件锁之 flock
  1. 场景概述  在多线程开发中,互斥锁可以用于对临界资源的保护,防止数据的不一致,这是最为普遍的使用方法。那在多进程中如何处理文件之间的同步呢?我们看看下面的图:Linux 编程中的文件锁之 flock
  1. 场景概述  在多线程开发中,互斥锁可以用于对临界资源的保护,防止数据的不一致,这是最为普遍的使用方法。那在多进程中如何处理文件之间的同步呢?我们看看下面的图:  图中所示的是两个进程在无同步的情况下同时更新同一个文件的过程,其主要的操作是:  1. 从文件中读取序号。  2. 使用这个序号完成应用程序定义的任务。  3. 递增这个序号并将其写回文件中。  从图中可得知两个进程读取分别增加了所读取到的序号,并写回到了文件中,但是如果有相互互斥的话,最后的值应该是1002,而不是所示的1001。为了防止出现这种情况,Linux提供了flock(对整个文件加锁)、fcntl(对整个文件区域加锁)两个函数来做进程间的文件同步。同时也可以使用信号量来完成所需的同步,但通常使用文件锁会更好一些,因为内核能够自动将锁与文件关联起来。  2. flock()  flock的声明如下  #include // Returns 0 on success, or -1 on errorint flock (intfd, int operation);  fcntl()函数提供了比该函数更为强大的功能,并且所拥有的功能也覆盖了flock()所拥有的功能,但是在某些应用中任然使用着flock()函数,并且在继承和锁释放方面的一些语义 中flock()与fcntl()还是有所不同的。  flock()系统调用是在整个文件中加锁,通过对传入的fd所指向的文件进行操作,然后在通过operation参数所设置的值来确定做什么样的操作。operation可以赋如下值:  在默认情况下,如果另一个进程已经持有了文件上的一个不兼容的锁,那么flock()会阻塞。如果需要防止这种情况的出现,可以在operation参数中对这些值取OR(|)。在这种情况下,如果一个进程已经持有了文件上的一个不兼容锁,那么flock()就会阻塞,相反,它会返回-1,并将errno设置成EWOULDBLOCK。  任意数量的进程可同时持有一个文件上的共享锁,但子任意时刻只能有一个进程能够持有一个文件上的互斥锁,(这有点类似读写锁)。下图是进程A先设置了锁,进程B后设置锁的支持情况:  无论程序以什么模式打开了文件(读、写或者读写),该文件上都可以放置一把共享锁或互斥锁。在实际操作过程中,参数operation可以指定对应的值将共享锁转换成互斥锁(反之亦然)。将一个共享锁转换成互斥锁,如果另一个进程要获取该文件的共享锁则会阻塞,除非operation参数指定了LOCK_NB标记,即:(LOCK_SH | LOCK_NB)。锁的转换过程不是一个原子操作,在转换的过程中首先会删除既有的锁,然后创建新锁。  3. 锁继承与释放的语义  flock()根据调用时operation参数传入LOCK_UN的值来释放一个文件锁。此外,锁会在相应的文件描述符被关闭之后自动释放。同时,当一个文件描述符被复制时(dup()、dup

最近更新

交通港站与枢纽3[1]1and32 63页

防洪坝施工方案 14页

02针灸穴位注射内科01 100页

无定形碳酸钙的一些合成、转化及性质研究的综.. 2页

中级财务会计-第十章所有者权益-PPT课件 26页

无催化剂纳米ZnO的制备及其研究的综述报告 2页

无人机遥感影像三维重建技术研究的中期报告 2页

防止噪声污染措施 4页

防排烟通风工程施工承包合同 4页

旋转加速喷丸表面纳米化工业纯铝和纯铜的制备.. 2页

实用的客服工作总结范文集锦8篇(全文共10229字.. 4页

旅行社员工工作满意度的区域差异研究的中期报.. 2页

实用的实习自我鉴定范文锦集7篇(全文共5420字.. 4页

旅游开发中的环境保护法律问题研究的综述报告.. 2页

旅游地形象测量研究——以陕西西安为例的中期.. 2页

闫垌小学品牌学校创建方案 10页

实用的实习生自我鉴定模板锦集7篇(全文共5934.. 4页

施用有机肥农田氮磷流失模拟研究的综述报告 2页

浙江省高职考语文试卷最近11年来高职考作文总.. 8页

门窗装修合同书 5页

施工企业进度控制研究的综述报告 2页

门店职位说明书 8页

门岗岗位分配职责 2页

方以智科学观研究的中期报告 2页

新钢钢渣微粉处理项目的研究与设计的中期报告.. 2页

稀土开采工艺 3页

法兰阀门保温盒保护层和绝热层工程量计算表 2页

CJT5162017生活垃圾除臭剂技术要求 14页

人民陪审员心得体会(精选6篇) 陪审员培训心.. 73页

血液透析中低血压课件 37页