linux新手教程之创建锁文件的方法

Linux提供了多种特性来实现文件锁定。其中最简单的方法就是以原子操作的方式创建锁文件,所谓“原子操作”就是在创建锁文件时,系统将不允许任何其它的事情发生。这就给程序提供了一种确保它所创建的文件是唯一性的方式,且该文件不可能被其它程序在同一时刻创建。

方法

锁文件仅仅是充当一个指示器的角色,程序间需要通过相互协作来使用它们。锁文件只是建议性锁,与此对立的.是强制性锁。

为创建一个用作指示器的文件,我们使用带O_CREATE和O_EXCL标志的open系统调用。这将使我们以一个原子操作同时完成两项工作:确定文件不存在,然后创建它。

实现

//file : lock.c#i nclude#i nclude#i nclude#i nclude#i ncludeint main(){int file_desc;int save_errno;file_desc = open("/tmp/LockFile.test", O_RDWR | O_CREAT | O_EXCL, 0444);if (file_desc < 0){save_errno = errno;printf("Open failed with error is %d ", save_errno);}else {printf("Open succeeded ");}exit(EXIT_SUCCESS);}

第一次运行程序:

$ lock

输出如下:

Open succeeded

我们再次运行程序:

$ lock

输出如下:

Open failed with error is 17

分析:

第一次运行程序时,由于文件并不存在,所以执行成功。对于后续的执行,因为文件已经存在而失败了。若想程序再次执行成功,必须删除锁文件。

在Linux系统中,通常错误号码17代表的是EEXIST,此错误用以表示一个文件已存在。错误号定义在头文件errno.h或(更常见的)它所包含的头文件中。

【linux新手教程之创建锁文件的方法】相关文章:

锁住文件linux,linux新手教程之创建锁文件的方法相关推荐

  1. linux命令dd创建虚拟硬盘,每日一题.PYTHON如何模拟LINUX的dd命令快速创建大文件?...

    原文数据: 无 具体要求: 1. 模拟Linux的dd命令快速创建大文件 代码实现: # -*- coding: utf-8 -*- """ # # Authors: l ...

  2. PS新手教程:加深减淡工具使用方法

    大家好我是微风,一个爱设计爱生活的平面设计师,今天的这篇文章主要给大家整理了PS新手教程:加深减淡工具使用方法,本篇文章加深减淡工具使用操作方法是PS基础的一些工具技巧的使用,请大家跟着教程仔细操作, ...

  3. Final Cut Pro中文新手教程 (五八) 链接文件的使用

    打开Final Cut Pro发现红色一片,显示缺少文件,这是什么情况呢?这是因为修改了片段的源数据,无论是名称.位置还是删除都会出现这种情况.如何找回缺失的文件呢?这时候我们就会用到链接文件,这里小 ...

  4. Java IO五种创建写入文件的方法

    Java IO之5种创建写入文件的方法 Files.new BufferedWriter(Java 8) Files.writer(Java 7推荐) PrintWriter File.createN ...

  5. 如何快速在Linux系统的硬盘上创建大文件

    2019独角兽企业重金招聘Python工程师标准>>> dd 命令可以轻易实现创建指定大小的文件,如 dd if=/dev/zero of=test bs=1M count=1000 ...

  6. Linux中创建目录,并创建txt文件中用vi编辑器输入内容

    ---创建目录 1.mkdir 创建一个新目录,如:创建director目录 语法:mkdir[选项]目录名              -m 创建目录的同时设置目录权限              -p ...

  7. linux+gunzip解压命令,Linux gunzip命令解析 gunzip解压文件的方法

    我们已经讨论过 Linux 下 gzip 命令的用法.对于初学者来说,gzip 工具主要用于压缩或者展开文件.解压时,在 gzip 命令后添加 -d 选项即可,使用示例如下: gzip -d [com ...

  8. linux系统间拷贝文件,Linux系统下不同机器之间拷贝文件的方法

    在Linux系统下,不同机器上实现文件拷贝 一.将本地文件拷贝到远程机器: scp /home/administrator/news.txt root@192.168.6.129:/etc/squid ...

  9. ABBYY在MS Office中创建PDF文件的方法

    2019独角兽企业重金招聘Python工程师标准>>> ABBYY PDF Transformer+是一款可创建.编辑及将PDF文件转换为其他可编辑格式的OCR图文识别软件,不仅可以 ...

最新文章

  1. 数据库:SQL Server与MySQL
  2. python中parse.add_argument()简单用法
  3. 为什么内联函数,构造函数,静态成员函数不能为virtual函数
  4. css里面的位置属性,CSS定位属性Position详解
  5. “寒门状元之死”文章引热议 京东徐雷:三流文学作品 多看书吧
  6. 利用位运算实现加减乘除
  7. 线性代数基本公式结论简要总结(2)
  8. 拼多多砍价小程序源码/流量主系列微信小程序源码
  9. 《工业设计史》 第三章:18世纪的设计与商业
  10. ITIL 4 Foundation 思维导图笔记整理
  11. 学习道长的30个Swift法术 (一)
  12. Label 相关论文汇总
  13. 电脑桌面显示两个计算机,电脑如何用两个显示器_怎么一台主机两个显示器-win7之家...
  14. 《95后的指数基金投资课》进阶阶段:估值判断之最基本的估值指标-市盈率PE,市净率PB,股息率
  15. 新一代安全运营中心体系
  16. Android多进程从头讲到尾,吐血整理
  17. 输出《易经》六十四卦的卦象符号
  18. PlantUML语法
  19. 多重继承《C++ primer 3th》
  20. 腾讯微信公开课分享的所有精华都在这里了(PPT都截了啊!)

热门文章

  1. PAT1042 字符统计 (20 分)
  2. netty系列之:一个价值上亿的网站速度优化方案
  3. JDK12的五大重要新特性
  4. python怎么索引txt数据中第四行_python txt读取第一行数据库
  5. charles 手机证书下载安装
  6. 操作系统(2) -- 进程管理
  7. BSP细分时代即将来临
  8. hdu 4143 A Simple Problem 数论
  9. c语言去尾法和进一法的例子,《去尾法与进一法》教学案例与反思
  10. datatable 查询_2020年浙江注册会计师成绩查询预告