作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我似乎无法制作 Perl 的
flock
工作。
我正在锁定一个文件,检查返回值以确保它确实被锁定,而且我仍然能够打开和写入它,就像没有问题一样。
这是我锁定文件的方法
#!/usr/bin/perl -w
use strict;
use Fcntl ':flock';
$| = 1;
my $f = $ARGV[0];
open( my $fh, '>>', $f ) or die "Could not open '$f' - $!";
print "locking '$f'...";
flock($fh, LOCK_EX) or die "Could not lock '$f' - $!";
print "locked\n";
sleep 10;
print "waking up and unlocking\n";
close( $fh );
#!/usr/bin/perl -w
use strict;
my $f = $ARGV[0];
open( my $fh, '>>', $f ) or die "Could not open '$f' - $!";
print $fh "This line was appended to a locked file!\n";
close( $fh );
最佳答案
flock()
是咨询锁。您必须使用 flock()
来拥有所有进程
也意识到你打电话的方式flock()
它会阻塞,直到它可以得到一个锁。如果你想失败,你必须使用 LOCK_NB
旗帜也是。
open(my $lf, ">>fileIWantToLockOn");
my $gotLock = flock($lf, LOCK_EX | LOCK_NB);
unless ($gotLock)
{
print "Couldn't get lock. Exiting";
exit 0;
}
flock()
不适用于 NFS
关于perl - 无法让 Perl 的羊群工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5267019/
关于那个线程: bash flock: exit if can't acquire lock 如果有人能向我解释“200”代表什么,我将不胜感激。 我读过有关 flock 的文章,如果要指定文件描述符
以下锁定机制用于防止 cron 作业并发运行: #!/bin/bash echo "Before critical section" ( flock -e 200 echo "In c
我正在使用 cron 定期运行 bash 脚本,并尝试使用 flock以防止此脚本及其创建的进程被多次运行。 crontab 中每分钟运行一次的条目是: */1 * * * * flock -n /t
我将 flock() 用于进程间命名的互斥锁(即某些进程可以决定锁定“some_name”,这是通过在临时目录中锁定名为“some_name”的文件来实现的: lockfile = "/tmp/som
我是一名优秀的程序员,十分优秀!