我正在编写一个脚本,没有任何理由在运行时产生两个额外的进程。为了解决这个问题,我写了一个文件锁例程。但是因为这些额外的进程同时运行,所以这似乎根本不起作用。我在这里失踪了什么。
my $lockfile = '/tmp/lockfile';
my $fhpid;
sub BailOut {
print "$0 is already running. Exiting.\n";
print "(File '$lockfile' is locked).\n";
exit(1);
}
open($fhpid, '>', $lockfile) or die "error: open '$lockfile': $!";
flock($fhpid, LOCK_EX|LOCK_NB) or BailOut();