zapis do jedneho suboru z viacerych procesov

Alexandr Malusek malusek na hroch.ujf.cas.cz
Úterý Srpen 1 14:33:49 CEST 2000


Petr Šobáň <soban na centrum.cz> writes:

> Dne Po, 31 čec 2000 Petr Novotny napsal(a):
>
> >Zapisy kratsi nez nejaka magicka konstanta (512 bytu? 1024 bytu? 
> >tak neco) se provedou atomicky - na to je nejaka garance.

Myslim, ze driv atomicitu zajistoval zapis pres write(2), ale nemam
cas to overit. Soucasnou situaci neznam. Pri pouziti fprintf a
podobnych funkci z libc dochazi k bufferovani zapisu - domnivam se, ze
zde muze dojit k poruseni atomicity i pro male mnozstvi dat.

> Podle me je hlavni problem v programu ktery pristupuje k souboru,
> pokud otevru soubor pro zapis tak to muze udelat pouze jeden program
> a muzu tam zapisovat, a pokud se ted pokusi otevrit pro zapis i
> druhy program tak se mu to nepovede a ted zalezi jak se zachova, zda
> skonci nebo se za nejakou chvili pokusi soubor znovu otevrit.

Moznost soucasneho zapisu z vice procesu do jednoho souboru se v Unixu
resi pomoci "file locking" (viz flock, fcntl a dokumentace v
/usr/src/linux/Documentation). Pokud si zadny z procesu explicitne
nevyzada mandatory lock na dany soubor, pak defaultne do souboru muze
zapisovat "libovolne" mnozstvi procesu. Ke ztrate dat nedojde, ale
nejsou-li zapisy atomicke, muze dojit k "promichani" dat.

--
A. Malusek  (malusek na ujf.cas.cz)
UJF AV CR


Další informace o konferenci Linux