外语类 | 雅思 托福 四级 六级 专四专八 | 学历类 | 成考 高考 自考 考研 | 工程类 | 监理 质量 结构 安全 | 一级建造师 二级建造师 | 考试论坛
医学类 | 护士 药师 医师 外贸类 报关员 | 职业类 | 保险 司法 证券 导游 | 会计类 | 初级 中级 高级 注会 | 会计证考试 公务员考试 | 计算机类
考试动态 | 报考指南 | 国际认证RHCE(红帽认证) | 红旗认证 | 第三方认证LPI | 其它认证 | 综合辅导 | 心得技巧 | 考试培训 | 考试论坛
考试中国—计算机频道网址:it.kswchina.com 这里有:计算机的各种等级和认证考试,一级,二级,三级,四级等多种等级认证的考试资料。
您现在的位置: 考试中国 >> 计算机 >> Linux认证 >> 综合辅导 >> 正文 考试网中国:www.kswchina.com
在Linux操作系统下创建锁文件
更新时间:2008-11-11  Linux认证考试  收藏此文  收藏"考试中国"

    一、概述

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

  二、方法

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

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

  三、实现

  以下为引用的内容:

  //file : lock.c

  #i nclude

  #i nclude

  #i nclude

  #i nclude

  #i nclude

  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或(更常见的)它所包含的头文件中。

责任编辑:仰易
回全站首页      计算机考试专题--点击进入
相关文章
devtodo —— 在终端中运行的 todo 管理工具
Darkhttpd -- 超小型静态 http 服务器
认识一些基于Linux系统的木马病毒
Ubuntu 8.10配置VPN网络及碰到问题的解决
Windows为什么不能很好的支持固态硬盘
Windows自带功能进行远程诊断调试!
WindowsServer2003的自动登录设置
XP下使用2003的“管理工具”中的“远程桌面”
栏目推荐
微软认证真题
· 微软认证考试:70064Windows95考生回顾
· 微软的面试题及答案(超变态但很经典
· 微软认证考试:70064Windows95考生回顾
· 微软认证考试:70064Windows95考生回顾
· 微软认证考试:70064Windows95考生回顾
· [MCSE真题]正确配置IP地址以排错考题
Oracle认证真题
· 八、管理信息基本概念
· CCNA最新模拟考试题
· 网络管理员6道企业实战难题
· 思科Cisco认证最新真题50道:TCP/IP
· 关于Cisco路由协议题和答案(中文)
· Cisco试题库:ccna最新真题
Linux认证真题
· 在Linux操作系统下创建锁文件
· devtodo —— 在终端中运行的 todo 管
· Darkhttpd -- 超小型静态 http 服务器
· 认识一些基于Linux系统的木马病毒
· Ubuntu 8.10配置VPN网络及碰到问题的
· Linux单网卡架设VPN并NAT共享上网
JAVA认证真题
· JAVA题库:JAVA面试题目整理
· SCJP认证套题解析之二
· SCJP认证套题解析之一
· SCJP考试题310-025(第二套)
· SCJP考试题310-025(第二套<1>)18-147
· SCJP考试题310-025(第二套<3>)51-91/
网站简介 | 服务条款 | 汇款方式 | 广告合作 | 发布优势 | 招聘人才 | 隐私保护 | 合作伙伴 | 友情链接 | 网站导航 | 帮助中心 |
COPYRIGHT (C) 2003-2008 BEIJING KSWCHINA.COM INC ◎ 考试中国 ALL RIGHTS RESERVED.网站法律顾问:姚克枫律师
《中华人民共和国电信与信息服务业务》信息产业 京ICP备06046971号 技术支持:嘉瑞恒通(北京)科技有限公司。