• 网络学院
  • IT资讯
  • 操作系统
  • 网络技术
  • 软件应用
  • 办公软件
  • 编程技术
  • 网站架设
  • 数据库类
  • 平面设计
  • 多媒体类
  • 游戏资讯
  • 教学论文
  • 认证考试
文件加锁方法——通用锁函数
  站点:
  • 首 页
  • 最新软件
  • 文章教程
  • 国内软件
  • 国外软件
  • 绿色软件
  • 源码下载
  • 字体下载
文件加锁方法——通用锁函数
软件发布 文件加锁方法——通用锁函数
网络软件 系统工具 应用软件 联络聊天 图形图像 多媒体类 行业软件 游戏娱乐 编程开发 安全相关 教育教学 数码软件 绿软下载
热门软件: QQ 瑞星 pplive e话通 木马克星 千千静听 office2000 五笔字根 Photoshop 视频分割
返回文章教程首页 >> 文章首页 >> 编程技术 >> CGI教程 >> 文件加锁方法——通用锁函数

文件加锁方法——通用锁函数

添加时间: 2006-2-18 2:27:27  作者: CGI教程  阅读次数:164   来源: http://www.d9soft.com

          假设你编写了一个非常出色的Perl程序。比如说一个计数器,那么可能有许多人同时运行你的程序。它运行得如此频繁,以致于你的程序的许多实例互相重叠了。对一个文件,一次只能进行一个写工作,所以在写的同时,要对文件加锁,防止别的用户也进行写操作。如果你使用Windows 95或Windows 98计算机,那就不必了,因为Windows系统回自动对文件加锁的,如果你是使用Windows NT或UNIX的话,就要对文件加锁了。   

  我们一般是对要写的文件进行锁定,是用flock函数:

  use Fchtl qw(:flock);

  flock (FILEHANDLE,Lock_EX);   

  但是,在试图读写的文件上加锁是很复杂的。由于打开文件句柄和锁定文件至少需要两个步骤的进程,因此设置文件锁就会带来一些问题,首先必须打开文件,然后才能给文件加锁。如果用open(FH,“>filename”),然后用flock函数给文件加了锁,那么在你获得该锁之前,你已经修改了该文件(用>对文件截尾了)。通过截尾你可能修改了该文件,而其他进程则对该文件设置了锁。

  若要解决这个问题,就要建个标识文件,它没有什么重要的内容,凡是对该文件拥有锁的人,均能处理该文件。我们可以对这个标识文件进行加锁、解锁,在加锁和解锁之间对你想要读写的文件进行操作。代码如下:

  use Fcntl qw(:flock);   

  sub get_lock {

  open(SEM,">Temp.tmp") or die "Can't create semaphore: $!"; #Temp.tmp就是个标识文件

  flock(SEM,LOCK_EX) or die "Lock failed: $!":

  }  

  sub release_lock {

  close(SEM);

  }   

  #上面这两个函数就是通用锁函数

  get_lock();

  ……

  ……

  …… #读写文件

  release_lock();

 

上下文章:

 

上一篇文章: 在CGI中使用cookie的简单方法 下一篇文章: 简单的CGI二级域名跳转程序

相关文章:

  • 新蠕虫伪装成文件夹图标,让你防不胜防
  • Vista找不到Config文件夹的解决办法
  • vista隐蔽的注册表垃圾清理方法
  • 病毒猖獗,怎么打开电脑文件会较安全?
  • 在局域网中配置Vlan的基本方法

相关软件:

  • 胜新通用条形码设计打印系统 6.09
  • 文件管理精灵 V3.21
  • 胜新通用人事工资管理系统普及版-网络版 7.35
  • 胜新通用人事工资管理系统普及版 7.35
  • FTP远程文件同步更新程序 1.0.0.0
  • 系统文件备份工具 1.0a

 

快速导航

  • 网络学院
  • 精品汇聚
  • 字体下载
  • 教程下载
  • ASP源码
  • PHP源码
  • Net源码
  • JSP 源码

编程技术分类导航

  • ASP & ASP.NET教程
  • PHP教程
  • JSP教程
  • C/C++教程
  • VB & VB.NET教程
  • VC教程
  • Delphi教程
  • BCB教程
  • VFP教程
  • PB教程
  • JAVA教程
  • XML教程
  • C#教程
  • CGI教程

本类经典文章推荐

  • CGI教程(1)
  • CGI教程(2)
  • CGI教程(3)
  • CGI教程(4)
  • CGI教程(5)
  • CGI教程(6)
  • CGI教程(7)
  • CGI教程(8)
  • CGI教程(9)
  • CGI教学:第一章 cgilib例

CGI教程阅读排行

  • CGI教程(1)
  • PERL 的 CGI 文件及目录操作
  • CGI教程(2)
  • CGI教程(3)
  • 文件加锁方法——通用锁函数
  • perl实例分析教程之一
  • CGI教程(4)
  • CGI教程(5)
  • CGI教学:第一章 cgilib例
  • CGI教程(7)

编程技术阅读总排行

  • VB入门教程之一
  • Java连接数据库实例
  • 第二章 PowerBuilder 入门之创建新...
  • VC++之List Box/Check List Box控...
  • 第一章 什么是PowerBuilder
  • VC++ List Ctrl控件
  • VC++ Combo Box/Combo Box Ex控件
  • 学C++不得不看的一篇文章
  • VB入门教程之二
  • VC++之Button控件

广告位置

字母检索 A B C D E F G H I J K L M N O P Q R S T U V W X Y Z 回到顶部

关于我们 | 版权声明 | 免责条款 | 广告联系 | 软件发布 | 下载帮助 | 下载排行 | 网站地图 | 特别鸣谢 | 友情连接

copyright; 2005-2008 D9soft.com 第九软件网 版权所有