linuxC多进程通讯---文件锁

本文详细介绍了Linux下的文件锁,包括建议性锁和强制性锁的概念,以及flock、fcntl和lockf三个系统调用的使用方法。flock提供简单的全文件锁,fcntl支持更精细的记录锁,lockf则是fcntl的封装,允许对文件特定区域加锁。通过示例代码展示了如何在多进程中实现文件锁同步。
摘要由CSDN通过智能技术生成

•什么是文件锁

•英文名:file lock,在同一时刻只允许一个进程对文件进行访问
•建议性锁:advisory locking,又称协同锁
–内核只提供加减锁以及检测是否加锁,不提供锁的控制与协调工作
–需要多进程相互检测确认的加锁机制
–A进程对一个操作的文件加了锁
–B进程同样可以对该文件进行读写操作
–只有当B进程也对该文件加锁,文件锁才能起到同步作用
–Linux一般使用建议锁,而Windows一般使用强制性锁
•强制性锁: mandatory locking
–进程对文件进行I/O操作是,内核内部会检测该文件是否被加锁
–A进程对一个操作的文件加了锁
–当B进程对该文件进行I/O操作时,内核若检测该文件加了强制锁,B进程的操作则会失败

•系统调用:flock

•函数原型:int flock (int fd, int operation);
•函数功能:给整个文件添加或解除一个建议锁
•函数参数:operation
–LOCK_SH:共享锁
–LOCK_EX:独占锁、排他锁
–LOCK_UN:移除锁
•TIPS
–Flock只提供加锁、解锁机制,不提供锁检查
–需要用户自己检测,达到多进程同步操作
–用户若不自己检测,同样可以对一个已经加锁的文件进行读写操作

•系统调用:fcntl

•函数原型: int fcntl (int fd, int cmd, …

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值