加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

如何在Perl中锁定文件?

发布时间:2020-12-15 21:22:24 所属栏目:大数据 来源:网络整理
导读:在Perl中为文件创建锁的最佳方式是什么? 最好在文件上聚集或创建一个锁定文件来锁定并检查锁定文件上的锁定? 解决方法 如果你最终使用flock,这里有一些代码来做: use Fcntl ':flock'; # Import LOCK_* constants# We will use this file path in error m
在Perl中为文件创建锁的最佳方式是什么?

最好在文件上聚集或创建一个锁定文件来锁定并检查锁定文件上的锁定?

解决方法

如果你最终使用flock,这里有一些代码来做:
use Fcntl ':flock'; # Import LOCK_* constants

# We will use this file path in error messages and function calls.
# Don't type it out more than once in your code.  Use a variable.
my $file = '/path/to/some/file';

# Open the file for appending.  Note the file path is quoted
# in the error message.  This helps debug situations where you
# have a stray space at the start or end of the path.
open(my $fh,'>>',$file) or die "Could not open '$file' - $!";

# Get exclusive lock (will block until it does)
flock($fh,LOCK_EX) or die "Could not lock '$file' - $!";

# Do something with the file here...

# Do NOT use flock() to unlock the file if you wrote to the
# file in the "do something" section above.  This could create
# a race condition.  The close() call below will unlock the
# file for you,but only after writing any buffered data.

# In a world of buffered i/o,some or all of your data may not 
# be written until close() completes.  Always,always,ALWAYS 
# check the return value of close() if you wrote to the file!
close($fh) or die "Could not write '$file' - $!";

一些有用的链接:

> PerlMonks file locking tutorial(有点老)
> flock() documentation

为了回应您的补充问题,我会说,将文件锁定在文件上,或者在文件被锁定时创建一个你称之为“锁定”的文件,当它不再被锁定时将其删除(然后确保你的程序服从那些语义)。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读