Ключевые слова:lock, (найти похожие документы)
- BEST_PEOPLE (2:5077/15.22) -------------------- BEST_PEOPLE (RU.UNIX.LINUX) -
From : Yuriy Kaminskiy 2:5020/517.21 12 Aug 00 21:27:22
Subj : Правильный способ создания lock'ов
-------------------------------------------------------------------------------
* Forwarded from area 'RU.UNIX.LINUX'
Hello, stas!
>>>>> On 15:43 09/8/2000, stas%d1794n1@ekasb.sbank.e-burg.su writes:
s> Hе помогает. При копировании на FAT никаких ошибок не выдается. При
s> использовании inbound/outbound в qico - создаются файлы вида
s> QTEMP.nnnn и все.
Hеудивительно. Правильный способ создания lock'ов в *nix -
это создание временного файла (tmp=tmpnam(2)), запись туда getpid(),
после чего
if(link(tmp,lockname)==0) { ok, locked; } else { failed to lock; }
unlink(tmp);
Поскольку на fat сделать link невозможно - облом.
В принципе, можно
a) воспользоваться umsdos, но у нее еще с 2.1.x были серьезные
проблемы, по слухам, так до конца и не вылеченные.
b) переписать этот код, так чтобы он пользовался
open(...,O_CREAT|O_EXCL|...) - что идеологически неверно, но должно
сработать. Сколько там нужно перепахать для этого - без понятия,
ориентируйся на grep -w link *.[ch].
--
Yuriy Kaminskiy.
... PGP Key fingerprint = 43 6F DC 3B 23 1D CB 8E 31 64 C0 EF 78 A1 2A 0C
--- Gnus v5.2.25/XEmacs 19.14 * Origin: Kyle Katan's station (2:5020/517.21@fidonet)