Ed
bialix
Файл внутри каталога нужен чтобы предотвратить успешное переименовывание на Linux-платформе. В случае пустого каталога операция может закончиться успешно даже если каталог уже существует.
А почему нельзя просто создать каталог held без предварительных манипуляций? Насколько я помню mkdir - атомарная операция. Или на винде не так?
Если процесс-локер упал или висит, то любой процесс может разрушить замок.
Каким образом этот любой процесс поймет, что процесс-локер висит или упал? Или это ему не нужно знать?
На винде mkdir тоже атомарная операция. А вот как на Линуксе с этим? Создатель библиотеки lockfile (см. на pypi) утверждает, что для Линукса более правильным решением является использование link. Признаюсь, что в потрохах Линукса я не спец.
Каким образом любой процесс поймет? А как обычно: либо использовать приблизительное максимальное время для операции, или спросить пользователя программы, которая создала замок (Эй, у тя прога работает или висит?).
Например, если замок был создан вчера и до сих пор не разрушен, значит что-то не так. Временную дельту можно подобрать как-то опытным путём.
Можно выдать диалог-запрос пользователю: “слышь чувак, база залочена тем-то и тем-то тогда-то (ХХХ часов назад). Чё делать бум? Может сами разрушим замок, ась?”
Ну а какие еще варианты? У вас что проги виснут/падают каждые 15 минут? Даже страшные рассказы про BSOD как-то не впечатляют уже.