进程间通信(二十)——文件锁

文件锁是Linux下的一种高效的进程间通信方式,主要用于文件的同步。它分为建议性锁和强制性锁,其中Linux通常采用建议性锁。文件锁的主要系统调用包括flock、fcntl和lockf,分别提供了不同特性的锁操作。flock提供加锁和解锁,但不检查锁状态;fcntl支持记录锁,并能进行阻塞和非阻塞的锁申请;lockf则允许对文件的特定区域进行细粒度的锁定。
摘要由CSDN通过智能技术生成

文件锁

优点

  • 在所有的IPC通信中效率最高

缺点

  • 所有共享内存带来的问题:同步
  • 解决方法
    • System V信号量
    • POSIX信号量
    • 文件锁
      • 专门为文件设计的同步技术
      • 适用于操作共享文件映射

文件锁

什么是文件锁

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

文件锁使用接口

系统调用:flock

  • 函数原型:int flo
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值