Accesul exclusiv la fisiere se poate realiza prin 5 tehnici (apeluri sistem): lockf, flock, open, creat si link.
Scenariul de lucru este urmatorul:
-se deschide fisierul
-se blocheaza accesul altor procese la fisier
-se executa operatii asupra fisierului respectiv (citiri/scrieri)
-se deblocheaza fisierul
-se inchide fisierul
Detalii asupra blocarii/deblocarii:
lockf La blocare se specifica descriptorul de fisier, operatia F_LOCK si numarul de bytes care se blocheaza.
La deblocare se specifica descriptorul de fisier, operatia F_ULOCK si numarul de bytes.(Exemplu lockf)
flock La blocare se specifica descriptorul de fisier si operatia LOCK_EX.
La deblocare se specifica descriptorul de fisier si operatia LOCK_UN.(Exemplu flock)
open Pentru blocare incercam sa creem un fisier de blocare, folosind apelul sistem open(), avind atributete O_CREAT
(creaza un fisier daca acesta nu exista) si O_EXCL (eroare daca se creaza si fisierul deja exista) , caz in care la esec
procesul apelat se blocheaza.La deblocare se sterge fisierul.(Exemplu open)
creat Pentru blocare incercam intr-o bucla while sa creem un fisier de blocare, folosind apelul sistem creat(). Daca
exista un astfel de fisier apelul creat va esua.La deblocare se sterge fisierul(Exemplu creat)
link La blocare creeam intai cu creat() un fisier sistem (daca acesta exista deja atunci apelul creat il va trunchia la 0).
Apoi se incearca intr-un while redenumirea fisierului temporar la fisierul de blocat. Daca un alt proces a executat un my_lock,
atunci apelul sistem link va genera o eroare. Aceasta eroare apare deoarece daca numele unei legaturi la un fisier exista
deja, atunci link va esua.La deblocare se sterge fisierul respectiv.(Exemplu link)