·ChinaUnix首页 ·论坛 ·博客 
Linux首页 | Linux新闻 | Linux文档 | Linux论坛 | Linux下载 | Linux博客 | Linux搜索
新手入门 | 安装启动 | 管理员指南 | 开发手册 | 桌面应用 | 程序开发 | 数据库 | 网络技术| CentOS | Fedora | MySQL | Apache | Ubuntu | Gentoo| OSCON08
  Linux时代 >> 技术文档 >> 新手入门
 
在Linux操作系统下创建锁文件
来源: Linux伊甸园  日期: 2008.05.28 16:15 (共有条评论) 我要评论
 
一、概述

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 %d\n", save_errno);}else {printf("Open succeeded\n");}exit(EXIT_SUCCESS);}

第一次运行程序:
$ lock

输出如下:
Open succeeded

我们再次运行程序:
$ lock

输出如下:
Open failed with error is 17

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

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


最新资讯更多>> 
· 红帽简化超级计算平台对抗微软..
· Mono 2.0发布 平台差异将进一步..
· 开源备份渐入主流
· Vista太慢 笔记本厂商倾向Linu..
· 业内分析:Solaris还有市场前景..
· 低价Linux笔记本电脑退换比例居..
· Oracle再祭收购大旗,这次红帽..
· 陈向群、杨芙清编著的《操作系..
· Linux发布17周年
· 开发者发行版:openSUSE 11.1 ..
论坛热点更多>> 
· 【转帖】阿纲行走中国500天
· 帖些美女
· 《画皮》
· 我也发个图片吧
· MM生活片断汇总
· PS白蛇--大家可以自己PS跟贴
· 白衣的忧伤
· 企鹅(我所有的){应大家要求..
· RHCA拿的下吗?
· Linux新手 用什么版本好
文档更新更多>> 
· kmess1.5.1在红旗6sp1上的安装方法
· OOo3.0 RC2 发布,中文版可用。
· IT从业人员必看的10大论坛
· SSH权威指南
· DNS相关定义介绍
· OpenVPN(zt)
· Linux shell I/O重定向详解
· linux下的烧写环境配置
· tcpdump详细用法
· 转:ARM的嵌入式Linux移植体验之基..
 
关于我们 | 联系方式 | 广告合作 | 诚聘英才 | 网站地图 | 友情链接 | 免费注册

Copyright © 2001-2008 ChinaUnix.net All Rights Reserved

感谢所有关心和支持过ChinaUnix的朋友们

京ICP证041476号