如何防止他人在文件写入时对其进行读/写

时间:2019-07-02 15:52:29

标签: linux shell perl aix

我想在一个进程正在对文本文件进行写操作时将其锁定。因此没有其他进程可以读取或写入。

1 个答案:

答案 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);