#include #include #include #include #include #include #include #include #include #include int main(int argc, char *argv[]) { int pid, fd_fifo, cont; int sem_id, shm_id; struct sembuf dec2={0,-2,0}; int *mem_cond; sem_id = atoi(argv[1]); shm_id = atoi(argv[2]); pid = getpid(); fd_fifo = open(argv[3], O_WRONLY); write(fd_fifo, &pid, sizeof(int)); mem_cond = (int *)shmat(shm_id, 0,0); cont = *mem_cond; printf("\n Pid = %d: memoria condivisa = %d\n", pid, cont); while(1) { semop(sem_id, &dec2, 1); printf("\n Pid = %d: memoria condivisa = %d\n", pid, *mem_cond); cont = cont * 4; printf("\n cont = %d\n", cont); *mem_cond = cont; } }