#include /* key_t */ #include /* ftok */ #include /* semget, semctl, semop */ #include /* stat, struct stat */ #include /* malloc */ #include /* perror, printf */ #include /* errno */ #define PRJVAL 1 key_t cle(char *pathKey, int prj) { key_t k; struct stat buf; // Q: rajouter ici l'appel à la fonction ftok(), et mettez la valeur de retour dans la variable retournée par la fonction // -- if (k==-1) perror("ftok"); /* Si fichier renomme ou deplace (dans le meme systeme), */ /* la cle reste valide, sinon invalide */ if (stat(pathKey, &buf)==-1) perror("stat"); else printf("cle %d (dec) %x (hex) inode %x\n", k,k,(int)buf.st_ino); return k; } // fonction qui crée l'ensemble de sémaphores int semCreat(char *pathKey, int nbSem, int val) { int semid; key_t key; // Q: il faut récupérer la clé créee dans la variable key -> appel à la fonction ftok //-- if (key==-1) return -1; // appel à la fonction semget() et mettre la valeur de retour dans la variable semid //-- if (semid!=-1) { unsigned short *values; values=(unsigned short*)malloc(sizeof(unsigned short)*nbSem); if (values!=NULL) { int s; for (s=0; s