flock()Linux下的文件锁 linux c flock

flock() 的函数原型如下所示:
int flock(int fd, int operation);

其中,参数 fd 表示文件描述符;参数 operation 指定要进行的锁操作,该参数的取值有如下几种:
LOCK_SH:表示要创建一个共享锁,在任意时间内,一个文件的共享锁可以被多个进程拥有;
LOCK_EX:表示创建一个排他锁,在任意时间内,一个文件的排他锁只能被一个进程拥有;
LOCK_UN:表示删除该进程创建的锁;
flock()Linux下的文件锁 linux c flock
LOCK_MAND:它主要是用于共享模式强制锁,它可以与 LOCK_READ 或者 LOCK_WRITE联合起来使用,从而表示是否允许并发的读操作或者并发的写操作;

通常情况下,如果加锁请求不能被立即满足,那么系统调用 flock()会阻塞当前进程。比如,进程想要请求一个排他锁,但此时,已经由其他进程获取了这个锁,那么该进程将会被阻塞。如果想要在没有获得这个排他锁的情况下不阻塞该进程,可以将LOCK_NB 和 LOCK_SH 或者 LOCK_EX 联合使用,那么系统就不会阻塞该进程。flock()所加的锁会对整个文件起作用。

注意:
1. 对于文件的 close() 操作会使文件锁失效;
2. 同理,进程结束后文件锁失效;
3. flock() 的 LOCK_EX是“劝告锁”,系统内核不会强制检查锁的状态,需要在代码中进行文件操 作的地方显式检查才能生效。

  

爱华网本文地址 » http://www.413yy.cn/a/25101014/234974.html

更多阅读

如何清理C盘的垃圾文件 win8电脑c盘怎么清理

如何清理C盘的垃圾文件?很多网友都会有这样的疑问,那么今天就和大家来分享下如何清理C盘的垃圾文件,请看下文:1、360的小工具里有个软件搬家功能 把你的软件和大的文件都移到其他盘。?2、首先你的C盘空间是多大的,还有你是否经常将软件

csdn的文件怎么下载 csdn下载的文件在哪

csdn的文件怎么下载——简介csdn文件的下载,今天找到了半天才弄好,感觉下载的入口太不明显,太过于隐蔽了,下面给大家说下流程,怎么才能更快捷的下载csdn下的文件。csdn的文件怎么下载——csdn的文件怎么下载方法/步骤csdn的文件怎么下载

删除的文件如何恢复 四种恢复技巧 linux恢复删除文件

【删除的文件如何恢复】四种恢复技巧——简介文件被删除了怎么恢复?对于种现象,经常办公的人可能会留意到,有时候不小心或者不经意之间就删除了某文件,突然某一时间发现它是重要文件时,想要找回时,却怎么也找不到了。在写这片经验之前,阳光

Linux下/etc目录下的文件详解二:group

具有某种共同特征的用户集合起来就是用户组(Group)。用户组(Group)配置文件主要就是/etc/group。 /etc/group文件内容包括用户和用户组,并且能显示出用户是归属哪个用户组或哪几个用户组,因为一个用户可以归属一个或多个不同的用户组;同一

怎样修改WIN7下的host文件 win7没有权限修改host

Win7下因为权限问题会导致不能更改hosts文件,这让人很是苦恼.下面的几种方法很有效.希望对大家有用.怎样修改WIN7下的host文件——方法一第一种方法是网上流传很广的覆盖方法.就是先复制hosts文件到别的地方,修改完了再覆盖回来就搞

声明:《flock()Linux下的文件锁 linux c flock》为网友我女神我骄傲分享!如侵犯到您的合法权益请联系我们删除