#include #include #include #include #include #include /* mnemonici in mode */ #include /* mnemonici in oflag */ #include int main (void) { int fd, i, pid, size=sizeof(int); int* buffer; sem_t* mutex1; sem_t* barbiere; sem_t* cliente; int* nr_clienti; mutex1=sem_open("mutex1", O_EXCL, S_IRUSR | S_IWUSR, 1); /* attacco i semafori */ barbiere=sem_open("barb", O_EXCL, S_IRUSR | S_IWUSR, 1); cliente=sem_open("clien", O_EXCL, S_IRUSR | S_IWUSR, 0); fd = shm_open("mymem1", O_EXCL |O_RDWR, S_IRUSR | S_IWUSR); /* attacco la SHM */ ftruncate(fd,size); buffer = mmap(NULL ,size,PROT_READ | PROT_WRITE, MAP_SHARED ,fd, 0); nr_clienti=buffer; printf("cliente: entro dal barbiere\n"); sem_post(cliente); sem_wait(mutex1); *nr_clienti=*nr_clienti+1; sem_post(mutex1); sem_wait(barbiere); sleep(1); printf("cliente %d: esco dal barbiere\n", *nr_clienti); }