全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

详解Linux文件锁flock

在多个进程同时操作同一份文件的过程中,很容易导致文件中的数据混乱,需要锁操作来保证数据的完整性,这里介绍的针对文件的锁,称之为“文件锁”-flock。

flock,建议性锁,不具备强制性。一个进程使用flock将文件锁住,另一个进程可以直接操作正在被锁的文件,修改文件中的数据,原因在于flock只是用于检测文件是否被加锁,针对文件已经被加锁,另一个进程写入数据的情况,内核不会阻止这个进程的写入操作,也就是建议性锁的内核处理策略。

flock主要三种操作类型:

  • LOCK_SH,共享锁,多个进程可以使用同一把锁,常被用作读共享锁;
  • LOCK_EX,排他锁,同时只允许一个进程使用,常被用作写锁;
  • LOCK_UN,释放锁;

进程使用flock尝试锁文件时,如果文件已经被其他进程锁住,进程会被阻塞直到锁被释放掉,或者在调用flock的时候,采用LOCK_NB参数,在尝试锁住该文件的时候,发现已经被其他服务锁住,会返回错误,errno错误码为EWOULDBLOCK。即提供两种工作模式:阻塞与非阻塞类型。

服务会阻塞等待直到锁被释放:

flock(lockfd,LOCK_EX)

服务会返回错误发现文件已经被锁住时:

ret = flock(lockfd,LOCK_EX|LOCK_NB)

同时ret = -1, errno = EWOULDBLOCK

flock锁的释放非常具有特色,即可调用LOCK_UN参数来释放文件锁,也可以通过关闭fd的方式来释放文件锁(flock的第一个参数是fd),意味着flock会随着进程的关闭而被自动释放掉。

flock其中的一个使用场景为:检测进程是否已经存在;

int checkexit(char* pfile)
{
  if (pfile == NULL)
  {  
    return -1; 
  }  
  int lockfd = open(pfile,O_RDWR);
  if (lockfd == -1) 
  {  
    return -2; 
  }  
  int iret = flock(lockfd,LOCK_EX|LOCK_NB);
  if (iret == -1) 
  {  
    return -3; 
  }  

  return 0;
}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。


# 文件锁  # linux  # flock  # flock命令  # linux 可执行文件与写操作的同步问题(文件读写操作产生的锁机制)  # 浅析Linux下一个简单的多线程互斥锁的例子  # linux shell之文件锁  # Linux多线程锁属性设置方法  # linux中各种锁机制的使用与区别详解  # 锁住  # 多个  # 加锁  # 第一个  # 两种  # 很容易  # 可以通过  # 三种  # 可以直接  # 可以使用  # 不具备  # 该文件  # 大家多多  # 与非  # 只允许  # 过程中  # 称之为  # 错误码  # strong  # ul 


相关文章: 建站三合一如何选?哪家性价比更高?  建站之星CMS建站配置指南:模板选择与SEO优化技巧  电脑免费海报制作网站推荐,招聘海报哪个网站多?  如何用好域名打造高点击率的自主建站?  广州网站制作的公司,现在专门做网站的公司有没有哪几家是比较好的,性价比高,模板也多的?  公司网站制作价格怎么算,公司办个官网需要多少钱?  如何用wdcp快速搭建高效网站?  建站之星备案是否影响网站上线时间?  如何在新浪SAE免费搭建个人博客?  免费网站制作模板下载,除了易企秀之外还有什么H5平台可以制作H5长页面,最好是免费的?  5种Android数据存储方式汇总  定制建站价位费用解析与套餐推荐全攻略  小型网站建站如何选择虚拟主机?  高防服务器租用如何选择配置与防御等级?  公众号网站制作网页,微信公众号怎么制作?  如何用IIS7快速搭建并优化网站站点?  官网建站费用明细查询_企业建站套餐价格及收费标准指南  动图在线制作网站有哪些,滑动动图图集怎么做?  html制作网站的步骤有哪些,iapp如何添加网页?  建站之星如何开启自定义404页面避免用户流失?  文字头像制作网站推荐软件,醒图能自动配文字吗?  建站IDE高效指南:快速搭建+SEO优化+自适应模板全解析  如何选择高效便捷的WAP商城建站系统?  如何快速搭建个人网站并优化SEO?  如何通过FTP空间快速搭建安全高效网站?  如何在Windows虚拟主机上快速搭建网站?  零服务器AI建站解决方案:快速部署与云端平台低成本实践  c# 在高并发下使用反射发射(Reflection.Emit)的性能  如何正确选择百度移动适配建站域名?  上海制作企业网站有哪些,上海有哪些网站可以让企业免费发布招聘信息?  昆明网站制作哪家好,昆明公租房申请网上登录入口?  如何获取PHP WAP自助建站系统源码?  标准网站视频模板制作软件,现在有哪个网站的视频编辑素材最齐全的,背景音乐、音效等?  网站制作的方法有哪些,如何将自己制作的网站发布到网上?  威客平台建站流程解析:高效搭建教程与设计优化方案  如何在Ubuntu系统下快速搭建WordPress个人网站?  如何用y主机助手快速搭建网站?  简单实现Android文件上传  网站制作网站,深圳做网站哪家比较好?  已有域名和空间,如何快速搭建网站?  建站主机空间推荐 高性价比配置与快速部署方案解析  如何通过cPanel快速搭建网站?  网站制作中优化长尾关键字挖掘的技巧,建一个视频网站需要多少钱?  网站制作价目表怎么做,珍爱网婚介费用多少?  黑客如何利用漏洞与弱口令入侵网站服务器?  C++时间戳转换成日期时间的步骤和示例代码  常州自助建站工具推荐:低成本搭建与模板选择技巧  seo网站制作优化,网站SEO优化步骤有哪些?  宝塔面板创建网站无法访问?如何快速排查修复?  如何在建站主机中优化服务器配置? 

您的项目需求

*请认真填写需求信息,我们会在24小时内与您取得联系。