/* * Rutinele de blocare si deblocare a fisierului folosind apelul * sistem open() */ #include #include extern int errno; #define FISBLOCAJ "fis.blocaj" my_lock(fd) int fd; { int tempfd; /* * Incearca sa creeze 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. */ while ((tempfd = open(FISBLOCAJ, O_RDWR | O_CREAT | O_EXCL, 0666)) < 0) { if (errno != EEXIST) err_sys("Eroare la open in timpul blocarii"); sleep(1); } close(tempfd); } my_unlock(fd) int fd; { if (unlink(FISBLOCAJ) < 0) err_sys("Nu se poate debloca"); }