高级文件操作--文件锁

  • 当多个用户使用、操作一个文件的时候,Linux通常采用的方法是给文件上锁,来避免共享资源产生的竞争的状态。
  • 文件锁按功能分为:
  1. 共享读锁:文件描述符必须读打开      一个进程上了读锁,其他进程也可以上读锁进行读取。 
  2. 独占写锁:文件描述符必须写打开       一个进程上了写锁,其他进程不能上写锁和读锁进行读写操作
  • 文件锁按类型分为建议锁和强制性锁。建议性锁要求上锁文件的进程都要检测是否有锁存在,并尊重已有的锁。强制性锁由内核和系统执行的锁。
  • fcntl不仅可以实施建议性锁而且可以实施强制性锁。

F_SETLK:设置文件锁            F_GETLK:获得文件锁信息            F_SETLKW:  F_SETLK的阻塞版本

 

flock结构体

  • I_type

 锁类型,F_RDLCK(共享读锁)、F_WRLCK(独占性写锁)或F_UNLCK(解锁一个区域)

  • I_start、I_whence

 要加锁或解锁的区域的起始地址,由I_start和I_whence两者决定。

 I_start是相对位移量,I_whence则决定相对位移量的起点。

  • I_len

 表示区域的长度

 

锁的继承与释放

  • 一个进程终止,他所建立的锁全部释放
  • 关闭一个文件描述符,此进程对应的文件的所有的锁均释放
  • 子进程不继承父进程的锁
  • 执行exec以后,新进程可以选择是否继承原来执行进程的锁
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值