Я не могу сделать Perl's
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 );
Почему я могу открыть файл и написать в него, не сказав, что он заблокирован?