| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Perl: Общие вопросы > Блокировка файла |
| Автор: study 22.8.2005, 13:32 | ||
| Привет Всем! Народ, хочу проконсультироваться по блокировки файла. У меня два скрипта обращаются (чтение/запись) с файлом. Мне надо, чтобы они вместе не работали. Делаю я так
Вопрос. Будит ли этот код ожидать пока файл освободиться и сколько? |
| Автор: chaos 22.8.2005, 13:36 | ||
вот посмотри пример
|
| Автор: study 22.8.2005, 13:56 |
| А здесь же по-моему, только файл delivery.sem блокируеться, а непосредственно delivery.txt нет, или я не прав |
| Автор: chaos 22.8.2005, 14:05 |
| прав, он как раз и сигнализирует о том что файл заблокированн |
| Автор: study 22.8.2005, 14:09 |
| значит, если другая программа захочеть открыть файл delivery.txt ей это удастся Мой пример вроде работает, только я не доконца его понимаю. |
| Автор: sharq 22.8.2005, 15:53 |
| study это стандартная блокировка файла (из Perl-рецептов). Скрипт будет ждать до тех пор, пока процесс, поставивший блок, не завершиться, т.е. пока не закончится работа с файлом, как только процесс завершился, скрипт получает доступ к файлу. Единственное но: если ты с помощью какого-нибудь редактора откроешь этот файл, например, на запись, то не создасться процесс, который заблокирует этот файл, и этот скрипт сразу получит доступ к записи и запишит то, что нужно... Если интересно можешь, посмотреть вариант блокировки файлов без использование функции flock - одноименная статья лежит в faq'e. |
| Автор: study 23.8.2005, 08:30 |
| Спасибо почитаю |
| Автор: rcdimon 25.8.2005, 12:06 |
| Обычно блокировка идет через семафор. Файл- семафор. И блокируется он, а не непосредственно тот с которым работаешь. Потому что могут произойти ошибки и при блокеровке и при проверки ее. И содержимое файла может быть нарушено. А в Файле-семафоре- содержимое не играет роли. |