Lock

Timotej Ecimovic - Cic cic na latefibm1.fs.uni-lj.si
Ned Jan 26 14:52:41 CET 1997


> > 
> > pri unlock pa imam probleme ker ne znam zbrisati datoteke.
> > A ima kdo kakšno idejo oziroma kakšno boljšo rutino?
> 
> Poskusi unlink() za zbrisati datoteko, pa bo.
> 

Kako mas resen problem, ce recimo prvi proces umre (shutdown,
zmanjka elektrike, jedrska vojna, ali eden od miljon razlogov..)
brez da pobrise fail za sabo?

Jaz predlagam takole:

Ko se proces zalaufa pogleda ce obstaja FIFO /tmp/nekaj.
Ce ne obstaja, OK, je prvi proces, in naredi FIFO,
ga odpre rw in opravlja nekaksno funkcijo serverja na njemu.

Ce FIFO obstaja in opravlja funkcijo serverja (ki je implementirana
v procesu) pomeni, da je prvi proces pri zivljenju.

Ce pa obstaja in ne odgovarja na pisanje, pomeni, da je prvi proces
crknil nepricakovano in novi mora spet FIFO odpreti rw in
ob svojem normalnem delovanju opravljati se funkcijo serverja.

Ce proces neha normalno, se vedno pobrise FIFOta.

Se pravi tri moznosti:
   FIFOta ni => proces je prvi.
   FIFO je in ga nima noben proces odprtega => proces je prvi, 
           ker je prejsnji crknil
   FIFO je in ga ima nekdo odprtega => to je druga kopija procesa.

Vse kar rabis je malo igrajckanja z non-blocking read-i.

Cic, ki se zaveda, da je tole nepotrebna komplikacija v primeru
da ne gre za kaksen kriticen program....




Dodatne informacije o seznamu Starilist