#include #include #include #define SEMKEY 75 int semid; struct sembuf psembuf; main() { int fd; char ch; semid=semget(SEMKEY,1,0777); psembuf.sem_num=0; psembuf.sem_op=-1; psembuf.sem_flg=SEM_UNDO; printf("Ora viene invocata la P() di Dijkstra. Attendere prego...\n"); semop(semid,&psembuf,1); //invoco la P() di Dijkstra if ((fd=open("file,dat",1))==-1) fd=creat("file.dat"); write(fd,"file aggiornato dal programma sem2\n",38); close(fd); printf("Effettuati gli aggiornamenti sul file -file.dat-\n"); printf("Battere INVIO per continuare"); ch=getchar(); // prima di sbloccare la risorsa file mettendo a verde // il semaforo, aspetto che l'utente batta INVIO psembuf.sem_op=1; semop(semid,&psembuf,1); //invoco la V() di Dijkstra printf("Eseguita la V() di Dijkstra"); }