Блокировка файлов

Когда запись в файл пытаются осуществить два или более процесса (речь может идти о нескольких запущенных экземплярах одной программы), содержимое файла может подвергнуться весьма неожиданным изменениям.
Для того, чтобы предотвратить запись данных в файл несколькими процессами одновременно, открытый для записи файл необходимо заблокировать. В этом случае другой процесс, желающий записывать в файл, будет поставлен в очередь до разблокировки потока.
Заблокировать файл, открытый для записи, позволяет функция flock().
open(OutFile, '>data.txt'); # Открываем файл data.txt для записи
# как поток OutFile
flock(OutFile, LOCK_EX); # Блокируем поток OutFile. Параметр LOCK_EX
# обеспечивает процессу монопольный доступ
# к файлу
print OutFile $data; # Записываем информацию в файл
flock(OutFile, LOCK_UN); # Разблокируем поток OutFile. Отныне запись
# в файл могут осуществлять другие процессы
close(OutFile); # Закрываем файл


© 2008-2018 ОптимизацияВебСайтов.ру


Любое использование текстового и графического контента сайта без активной ссылки на источник не доскается.