linux文件锁

文件在共享情况下,为了避免竞争的状态,通常采用给文件上锁的方法。文件锁包括建议性锁和强制性锁,

建设性锁要求进程要判断是否有锁存在,才采取相应措施。强制性锁在内核中使用,一旦文件有写入锁,内核将阻止其被写入操作。常用函数fcntl(),同时此函数还可以对文件中一记录上锁,称为记录锁(读取锁,写入锁)。

fcntl()函数格式

头文件:

<ysy/types.h>

<unistd.h>

<fcntl.h>

原型:

int fcntl(int fd,int  cmd, struct flock *lock)

cmd :

F_DUPFD 复制文件

F_GETFD

F_SETFD

F_DETFL

F_GETLK  根据lock描述,决定是否上文件锁

F_SETLK  设置lock描述的文件锁

F_SETLKW  阻塞的F_ETLK

lock :

struct  flock

{

short       l_type;     (F_RDLCK:读锁;F_WRLCK:写入锁;F_UNLCK:解锁)

off_t        l_start           文件中的相对位移量

short      l_whence  相对位移量起点,SEEK_SET,SEEK_CUR,SEEK_END

off_t       l_len            加锁区域长度

pid_t     l_pid          拥有文件锁的进程id号         

 

}

返回值:成功 :0

                失败: -1

写入锁为互斥锁

读取锁为共享锁

图片是测试代码

 

 

 

 

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值