Zamykani souboru
Jan Kasprzak
kas na informatics.muni.cz
Středa Duben 19 09:44:55 MEST 2000
Milan Sorm wrote:
: Fri, Apr 14, 2000 ve 10:40:30AM +0200 Jiri Solc napsal:
: #
: # Pokud je mi znamo zamkly ho nema. Ne ze bych neduveroval flock(), ale
: # pokud pisu neco pro ruzne systemy mam obavu ho pouzivat a tak delam
: # nestandartni postupy (ale ucinne) se zamykacimi soubory.
:
: A hlavne se flock() neda pouzit na NFS - to by mohl byt pro tebe, jarku,
: problem. Res to vytvorenim souboru $filename.lock a naslednym smazanim a
: prislusnymi testy.
Ani tohle na NFS nefunguje (neni tam zadne open(...,O_CREAT|O_EXCL)).
Pokud uvazujete zamykani mezi ruznymi systemy pres NFS (a nemate
lockd/statd), jedine reseni je toto:
while(1) {
my $rand = really_random_number();
open(LOCK, ">$dir/.tmp.$rand");
last if link "$dir/.tmp.$rand", "$dir/lockfile";
unlink "$dir/.tmp.$rand");
sleep 2;
}
unlink "$dir/.tmp.$rand");
close LOCK;
Je mozne, ze je misto link(2) mozne pouzit i rename(2).
-Yenya
--
\ Jan "Yenya" Kasprzak <kas at fi.muni.cz> http://www.fi.muni.cz/~kas/
\\ PGP: finger kas at aisa.fi.muni.cz 0D99A7FB206605D7 8B35FCDE05B18A5E //
\\\ Czech Linux Homepage: http://www.linux.cz/ ///
\You did not allow to drop the packet and machine tries to keep it. It does/
\\ not hang by the way, it simply works too hard to respond 8)8) --ANK //
Další informace o konferenci Perl