|
Producteurs / consommateurspar mémoire partagée et sémaphores
- ///////////////////////////////////////
- // Makefile
- //////////////////////////////////////
- tp3 : prod.o utils.o cons.o init.o
- gcc -o prod prod.o utils.o
- gcc -o cons cons.o utils.o
- gcc -o init init.o utils.o
-
- prod.o : prod.c
- gcc -c prod.c
-
- utils.o : utils.c
- gcc -c utils.c
-
- cons.o : cons.c
- gcc -c cons.c
-
- init.o : init.c
- gcc -c init.c
-
- ///////////////////////////////////////
- // Fichier d’initialisation
- //////////////////////////////////////
- #include <stdio.h>
- extern int *ouvrir_zone(char *, int);
- extern int ouvrir_sema(char *, int);
-
- #define NBCASES 10
- char * mutex_C = "sema.c" ; //référence aux fichiers
- char * mutex_P = "sema.p" ;
- char * mutex_R = "sema.r" ;
- char * mutex_W = "sema.w";
- char * indtampon = "cle.cle" ;
- char * indentree = "in.in";
- char * indsortie = "out.out";
- int mutexC, mutexP, mutexR, mutexW ;
- int taille = NBCASES * sizeof(int); // taille du buffer
- int * in,* out, * tampon;
- int main ()
- {
- printf("Bonjour, je suis l'ours Gabi !!\n") ;
-
- tampon = ouvrir_zone(indtampon, taille); if (tampon==NULL) exit();
- in = ouvrir_zone(indentree, sizeof(int)); if (in==NULL) exit();
- out = ouvrir_zone(indsortie, sizeof(int));if (out==NULL) exit();
-
- mutexW = ouvrir_sema(mutex_W, NBCASES); if (mutexW==-1) exit();
- mutexR = ouvrir_sema(mutex_R, 0); if (mutexR==-1) exit();
- mutexC = ouvrir_sema(mutex_C, 1); if (mutexC==-1) exit();
- mutexP = ouvrir_sema(mutex_P, 1); if (mutexP==-1) exit();
-
- *in = 0 ; *out = 0 ;
- return 0 ;
- }
| |