#include #include #include #include #include #include #include #include #include #include "dormirUnPeu.h" // Nombre de trains dans le circuit #define NB_TRAINS 3 // Nombre de tours de montagne russe que fait chaque train #define NB_TOURS 5 // Cle utilisee pour les semaphores #define CLE 42 int zoneE; int zoneH; int zoneA; void P(int semId){ struct sembuf op; op.sem_num = 0; op.sem_op = -1; op.sem_flg = 0; if (semop(semId, &op, 1) == -1){ perror("semop"); exit(EXIT_FAILURE); } } void V(int semId){ struct sembuf op = {0, 1, 0}; if (semop(semId, &op, 1) == -1){ perror("semop"); exit(EXIT_FAILURE); } } void codeTrain(int numTrain){ int nbTours; printf("Train %d : Je suis dans la zone zoneG\n", numTrain); dormirUnPeu(); P(zoneE); for (nbTours=0 ; nbTours