#include #include"shm.h" #include"sem.h" #include"matrice.c" void JoculVietii() {int i,j,k; int nrvii,nrvecinivii; struct info* MEM; int shmid,semid; int M[MAX][MAX]; shm_create(); shmid=shmget(KEY_SHM,0,0); if(shmid<0) printf("Nu se poate accesa zona de memorie partajata\n"); MEM=(struct info*) shmat(shmid,0,0); sem_create(); semid=semget(KEY_SEM,0,0); if(semid<0) printf("Nu se poate accesa setul de semafoare\n"); //initializam zona de memorie partajata (construim matricea de celule) ConstrMatrice(M,6,6); MEM->m=6; MEM->n=6; for(i=0;i<6;i++) for(j=0;j<6;j++) MEM->tab[i][j]=M[i][j]; printf("Configuratia initiala este :\n"); TiparMatrice(MEM->tab,MEM->m,MEM->n); nrvii=NrCeluleVii(MEM->tab,MEM->m,MEM->n); Initsem(nrvii); for(i=0;im;i++) for(j=0;jn;j++) if(MEM->tab[i][j]==1) { if(fork()==0) { nrvecinivii=CalcVecini(MEM->tab,MEM->m,MEM->n,i,j); DecrementeazaSem(); Astept_0(); if ((nrvecinivii<2)||(nrvecinivii>4)) MEM->tab[i][j]=0; //MEM->tab[i][j]=CelulaUrmatoare(MEM->tab,MEM->m,MEM->n,i,j); exit(0); } } for(k=0;ktab,MEM->m,MEM->n); shm_destroy(); sem_destroy(); } main() { printf("\n"); JoculVietii(); printf("\n"); }