Onyest dossier - Producteurs / consommateurs Ajouter à mes favoris
Sommaire
Systèmes parallèles
Cours
TDs
TPs
Gestion des processus
Contrôle de processus
Producteurs / consommateurs
Fichier d’un producteur
Fichier d’un consommateur
Probabilités appliquées aux systèmes
Théorie des langages et compilation
VHDL
Suite : Fichier d’un producteur

Producteurs / consommateurs

par 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 ;
}
Suite : Fichier d’un producteur
Onyest dossier - cours ingénieur informatique et électronique : SPAR, PAS, TLC, VHDL - http://www.onyest.free.fr/dossier/cours - webmaster : novis@chez.com

-