Модераторы: ginnie, korob2001
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Блокировка файла в родственных процессах 
:(
    Опции темы
kond
Дата 24.5.2013, 14:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 1
Регистрация: 24.5.2013

Репутация: нет
Всего: нет



Надо периодически сбрасывать содержимое лог-файла в архив.

Вот так мы пишем в лог:
     flock($fh, LOCK_EX);
     seek($fh, 0, SEEK_END);
     print $fh $line."\n";
     flock($fh, LOCK_UN);

А вот сброс в архив с обнулением лога:
     flock(LOG, LOCK_EX) or die "Cannot lock - $!\n";
     seek(LOG, 0, 0);
     open ARC, ">$log_archive" or die "Cannot write - $!\n";
     while(<LOG>) {
         print ARC;
     }
     close ARC;
     seek(LOG, 0, 0);
     truncate(LOG, 0);
     flock(LOG, LOCK_UN);

Все прекрасно работает в отдельном скрипте, запускаемом по крону или руками.
 Хотелось (не спрашивайте, из каких соображений) не запускать отдельный скрипт, а делать это в коде самого демона.
 И тут оказалось, что часть данных теряется.

Пробовал играть с типами болировки и буферизацией - безрезультатно (возможно - не тем играл?).
 Собственно, если не получится, можно оставить как есть.
 Так что вопрос, скорее, чисто спортивный - почему тот же код работает корретно из разных процессов и глючит из родственных?
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Perl: Системное программирование"
korob2001
sharq
  • В этом разделе обсуждаются вопросы относящиеся только к системному программированию на Perl
  • Если ваш вопрос не относится к системному или CGI программированию, задавайте его в общем разделе
  • Если ваш вопрос относится к CGI программированию, задавайте его здесь
  • Интерпретатор Perl можно скачать здесь ActiveState, O'REILLY, The source for Perl
  • Справочное руководство "Установка perl-модулей", можно скачать здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, korob2001, sharq.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Perl: Системное программирование | Следующая тема »


 




[ Время генерации скрипта: 0.0921 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.