Как запретить другим для чтения / записи файл, пока он пишет - PullRequest
0 голосов
/ 02 июля 2019

Я хотел поставить блокировку, пока один процесс пишет в текстовый файл. так что никакой другой процесс не может читать или писать.

1 Ответ

3 голосов
/ 02 июля 2019

Рекомендуется использовать механизм блокировки файлов flock в Perl.Его можно использовать для исключения доступа других файлов к файлу , если эти процессы также используют flock .Даже этот механизм будет некорректным с некоторыми системами (я смотрю на you , NFS).

Может быть более надежно работать с анонимным временным файлом, который другие процессы не будутзнать, и переименовать ваш файл, когда вы закончите с ним.

use File::Temp;

my ($fh, $obscure_filename) = tempfile();
print $fh "some data ...\n";
...
close $fh;
rename($obscure_filename, $the_real_name_of_the_file);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...