実行時に 2 つの余分なプロセスを生成する正当な理由がないスクリプトに取り組んでいます。これに対抗するために、私はファイルロックルーチンを書きました。しかし、これらの余分なプロセスが同時に実行されているため、これはまったく機能していないようです。ここで何が欠けていますか。
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();