Ключевые слова:lock, (найти похожие документы)
Date: Fri, 01 Nov 2002 11:59:55 +0500
From: Victor Wagner <vitus@communiware.ru>
Newsgroups: ftn.ru.perl
Subject: lock файлы для ограничения числа одновременно запущенных процесов
DZ> Можно ли, просто и _надежно_, ограничить количество запускаемых экземпляров
DZ> скрипта (например что бы более одного экземпляра в памяти не было).
DZ> Имеется ввиду метод работающий на unix-системах, не вызывающий shell-команд
Берется Unix-система, смотрится как там лочится модем (uucp-style
locking) и делается по образу и подобию.
Т.е. при старте создается некий файлик, куда пишется $$,
потом ему делается rename в фиксированное имя. rename - операция
атоммарная. Если обломился, значит такой файлик есть. Для пущей
bulletproof, файлик надо прочитать и послать процессу, pid которого
там записан, сигнал 0. Если эта операция не прошла, вернув ESRCH,
то процесс сдох, забыв прибить файлик. Можно файлик прибить и повторить
операцию.
При завершении скрипта, в том числе и аварийном (SIG{__DIE__}) не забыть
файлику unlink сделать.