我想在一个进程正在对文本文件进行写操作时将其锁定。因此没有其他进程可以读取或写入。
答案 0 :(得分:3)
Perl中的flock
文件锁定机制是建议性的。如果其他进程也正在使用flock,则可以使用它来阻止其他进程访问文件。甚至在某些系统中,这种机制也很不稳定(我正在查看NFS的 you )。
使用其他进程不会知道的匿名临时文件进行操作,并在处理完成后重命名文件可能会更可靠。
use File::Temp;
my ($fh, $obscure_filename) = tempfile();
print $fh "some data ...\n";
...
close $fh;
rename($obscure_filename, $the_real_name_of_the_file);