新手看招:在Linux操作系统下创建锁文件
发布:smiling 来源: PHP粉丝网 添加日期:2014-03-09 21:55:36 浏览: 评论:0
一、概述
Linux提供了多种特性来实现文件锁定。其中最简单的方法就是以原子操作的方式创建锁文件,所谓“原子操作”就是在创建锁文件时,系统将不允许任何其它的事情发生。这就给程序提供了一种确保它所创建的文件是唯一性的方式,且该文件不可能被其它程序在同一时刻创建。
二、方法
锁文件仅仅是充当一个指示器的角色,程序间需要通过相互协作来使用它们。锁文件只是建议性锁,与此对立的是强制性锁。
为创建一个用作指示器的文件,我们使用带O_CREATE和O_EXCL标志的open系统调用。这将使我们以一个原子操作同时完成两项工作:确定文件不存在,然后创建它。
三、实现
- //file : lock.c#i nclude <unistd.h>#i nclude <stdlib.h>#i nclude <stdio.h>#i nclude <fcntl.h>#i nclude <errno.h>int 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 %dn", save_errno);}else {printf("Open succeededn");}exit(EXIT_SUCCESS);}
第一次运行程序:$ lock
输出如下:Open succeeded
我们再次运行程序:$ lock
输出如下:Open failed with error is 17
分析:第一次运行程序时,由于文件并不存在,所以执行成功,对于后续的执行,因为文件已经存在而失败了,若想程序再次执行成功,必须删除锁文件。
在Linux系统中,通常错误号码17代表的是EEXIST,此错误用以表示一个文件已存在,错误号定义在头文件errno.h或(更常见的)它所包含的头文件中.
Tags: Linux操作系统 创建锁文件
相关文章
- ·一种解读Linux操作系统内核源码的好方法(2014-02-28)
- ·Linux操作系统Shell基础知识(2014-03-05)
- ·关于Linux操作系统的NTFS和内核分析(2014-03-05)
- ·Linux操作系统内核模块和驱动的编写过程(2014-03-05)
- ·嵌入式Linux操作系统的驱动程序开发要点(2014-03-05)
- ·Linux操作系统下C开发环境的构成与安装(2014-03-06)
- ·新手学堂:嵌入式Linux操作系统学习规划(2014-03-06)
- ·Linux操作系统上编译程序的方法详细介绍(2014-03-06)
- ·新手学堂:Linux操作系统下取得UUID的方法(2014-03-06)
- ·Linux操作系统设置OpenGL编程环境的方法(2014-03-06)
- ·关于Linux操作系统源代码查看工具的介绍(2014-03-06)
- ·在Linux操作系统下共享库编程的方法介绍(2014-03-06)
- ·Linux操作系统下安装Perl及Perl模块方法(2014-03-06)
- ·新手学堂:Linux操作系统下如何添加服务(2014-03-06)
- ·几个常用的Linux操作系统监控脚本(2014-03-07)
- ·Linux操作系统下6个应急处理小常识(2014-03-07)
推荐文章
热门文章
最新评论文章
- 写给考虑创业的年轻程序员(10)
- PHP新手上路(一)(7)
- 惹恼程序员的十件事(5)
- PHP邮件发送例子,已测试成功(5)
- 致初学者:PHP比ASP优秀的七个理由(4)
- PHP会被淘汰吗?(4)
- PHP新手上路(四)(4)
- 如何去学习PHP?(2)
- 简单入门级php分页代码(2)
- php中邮箱email 电话等格式的验证(2)