flock() (was Re: /etc/passwd is locked)

Michal Krause mike na navrcholu.cz
Čtvrtek Duben 23 16:17:33 CEST 1998


Jan Kasprzak wrote:
> 
> Michal Krause pise:
> [...]
> : programuji pro web a tam jsou pokusy o pouziti souboru
> : od dvou pozadavku naraz celkem bezne. Jednou za cas se mi stane, ze soubor
> : zkonci s 0 velikosti.
> 
>         Zrejme si nekdo soubor otevrel s O_TRUNC. Jinak samozrejme
> do souboru muze zapisovat vice procesu bez nejakeho poskozeni puvodniho
> obsahu - staci pouzit O_APPEND. konci-li soubor s nulovou velikosti,
> je chyba v aplikaci.

Bohuzel append je mi nanic (v jinych pripadech ho pouzivam a tam skutecne ke
kolapsu nedochazi) - konkretne v tomto pripade vsak potrebuji data nacist,
pozmenit a zase ulozit. Nic jineho tento program nedela, takze k vynulovani
souboru muze dojit pouze tehdy pokud by se nepovedlo cteni a ja zapsal prazdno
(to skutecne ohlidane nemam, ale se cteni vice procesu naraz potize nenastavaji
[pokud vim, cist najednou muze kolik procesu chce]).

> : Rad bych vedel, jestli vytvoreni pomocneho lock souboru je
> : bezna praxe pro uzamykani souboru, jake jsou pripadne potize s funkci flock()
> : apod. (treba flock v perlu mi zpusoboval z neznameho duvodu nekonecne forkovani
> : procesu az do padu pocitace).
> 
>         Ale jinak samozrejme zamykani pres (treba) fcntl() je rychlejsi
> a cistsi v tom smyslu, ze cekajici proces je jadrem pozastaven az do doby,
> nez se zamek uvolni (zatimco u zamykani pres soubor musi sam kontrolovat,
> je-li zamek volny). A fcntl() zamky se uvolni (na rozdil od zamykacich
> souboru) pri pripadnem ukonceni procesu, ktery zamek drzi.

Moment, ja mel za to, ze program musi okontrolovat stav locku a pripadne pockat
na odemceni. Nebo se snad proces pri volani fopen() zastavi a ceka na uvolneni?
Nebo staci select()?

                                  Mike
                                   /\
----------------------------------/  \----------------------------------
Michal Krause - 4WeB         /\  /    \  /\
mailto:mike na navrcholu.cz    /  \/      \/  \           Sluzba Na vrcholu
http://4web.navrcholu.cz/  /    \      /    \   http://www.navrcholu.cz/
ICQ:7665279               /      \    /      \
------------------------------------------------------------------------


Další informace o konferenci Linux