`
jedy
  • 浏览: 143751 次
  • 性别: Icon_minigender_1
  • 来自: 上海
文章分类
社区版块
存档分类
最新评论

文件加锁

阅读更多
对文件加锁还是应该对一个和操作文件对应的单独文件进行,否则还是可能有错误。
如下面两程序:

#!/usr/bin/perl
# 1.pl
use Fcntl ':flock';
open F,"a.txt";
flock(F,LOCK_EX);
sleep 5;
print <F>;
flock(F,LOCK_UN);
close F;

#!/usr/bin/perl
# 2.pl
use Fcntl ':flock';
open F,">a.txt";
flock(F,LOCK_EX);
flock(F,LOCK_UN);
close F;


程序1打开文件准备读,并加了锁,但程序2以写方式打开文件,
于是文件被清空,1中什么都读不到。为避免这种情况,可以对
一个单独的文件加锁,它只起一个标志的作用,如对文件a.txt.lck


#!/usr/bin/perl
# 1.pl
use Fcntl ':flock';
open FL,">a.txt.lck";
flock(FL,LOCK_EX);
open F,"a.txt";
sleep 5;
print <F>;
close F;
flock(FL,LOCK_UN);
close FL;

#!/usr/bin/perl
# 2.pl
use Fcntl ':flock';
open FL,">a.txt.lck";
flock(FL,LOCK_EX);
open F,">a.txt";
close F;
flock(FL,LOCK_UN);
close FL;

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics