22.03.2010 13:02, Sergey Aleynikov пишет:
Hello,

$lockfile = "/var/tmp/pradm_memcached_config_load.lock";
if(!-f $lockfile)
{
  print STDERR "$$ Creating lock file\n";
  open OUT,">$lockfile" or die "Cannot write to $lockfile $!";
  print OUT $$;
  close OUT;
  $lock = 1;
}
Поздравляю, у вас race между -f и "open OUT". Да ещё и print, чтобы
race'y было проще сработать :)

Посмотрите на cpan'e, там точно есть что-либо. Правильный алгоритм -
это либо открыть, попробовать сделать flock() - получилось, наш файл.
Либо создавать файл с O_EXCL - тогда открыть не получится, если файл
уже создан.

хм. ну лан. щаз попробую flock заюзать. может поможет.
Спасиб.

--
Moscow.pm mailing list
[email protected] | http://moscow.pm.org

Ответить