Presque propre au niveau du producteur
parent
fb861ac822
commit
96f0f537ed
|
@ -11,18 +11,19 @@
|
||||||
#include "types.h"
|
#include "types.h"
|
||||||
#include "sema.h"
|
#include "sema.h"
|
||||||
|
|
||||||
|
#define NAMESIZE 30
|
||||||
|
|
||||||
WINDOW *creation_fenetre(int n,int d,char *t);
|
WINDOW *creation_fenetre(int n,int d,char *t);
|
||||||
int main( int argc, char **argv)
|
int main( int argc, char **argv)
|
||||||
{
|
{
|
||||||
if(argc < 2) { printf("Usage %s numIPC\n", argv[0]); exit(EXIT_FAILURE); }
|
if(argc < 2) { printf("Usage %s numIPC\n", argv[0]); exit(EXIT_FAILURE); }
|
||||||
MEMP *memoireP;
|
MEMP *memoireP;
|
||||||
MSG temp;
|
int mutex_data, mutex_tpa, sem_global, i=0;
|
||||||
int mutex_data, mutex_tpa, sem_global, continuer = 0, i=0, tete;
|
|
||||||
char c;
|
char c;
|
||||||
MSG message;
|
|
||||||
const char CTRL_D = 4 ;
|
const char CTRL_D = 4 ;
|
||||||
int shmid;
|
int shmid;
|
||||||
int shm_key = atoi(argv[1]);
|
int shm_key = atoi(argv[1]);
|
||||||
|
char * nom_de_la_fenetre = NULL;
|
||||||
|
|
||||||
WINDOW * fenetre ;
|
WINDOW * fenetre ;
|
||||||
|
|
||||||
|
@ -47,12 +48,15 @@ int main( int argc, char **argv)
|
||||||
//P(sem_global);
|
//P(sem_global);
|
||||||
P(mutex_tpa);
|
P(mutex_tpa);
|
||||||
for(i = 0; i < MAX_PROD && memoireP->tpa[i] != -1 ; i++);
|
for(i = 0; i < MAX_PROD && memoireP->tpa[i] != -1 ; i++);
|
||||||
|
if(memoireP->tpa[i] != -1) { V(mutex_tpa); exit(EXIT_FAILURE); }
|
||||||
|
memoireP->tpa[i] = 0;
|
||||||
V(mutex_tpa);
|
V(mutex_tpa);
|
||||||
|
|
||||||
if(memoireP->tpa[i] != -1) { exit(EXIT_FAILURE); }
|
|
||||||
memoireP->tpa[i] = 0;
|
|
||||||
|
|
||||||
fenetre = creation_fenetre(LINES,0,"PRODUCTEUR") ;
|
// Je donne un nom à ma fenêtre
|
||||||
|
nom_de_la_fenetre = (char *) malloc(sizeof(char *) * NAMESIZE);
|
||||||
|
snprintf(nom_de_la_fenetre, NAMESIZE, "PRODUCTEUR %d", i);
|
||||||
|
fenetre = creation_fenetre(LINES,0,nom_de_la_fenetre);
|
||||||
|
|
||||||
// On quitte le producteur en tappant CTRL_D
|
// On quitte le producteur en tappant CTRL_D
|
||||||
while (( c = wgetch(fenetre)) != CTRL_D)
|
while (( c = wgetch(fenetre)) != CTRL_D)
|
||||||
|
@ -61,13 +65,14 @@ int main( int argc, char **argv)
|
||||||
P(mutex_data);
|
P(mutex_data);
|
||||||
if(((memoireP->queue -1) % MAX_BUF) != (memoireP->tete % MAX_BUF) )
|
if(((memoireP->queue -1) % MAX_BUF) != (memoireP->tete % MAX_BUF) )
|
||||||
{
|
{
|
||||||
temp = (MSG) memoireP->f[memoireP->tete];
|
memoireP->f[memoireP->tete].c = c;
|
||||||
temp.c = (char) c;
|
memoireP->f[memoireP->tete].idp = i;
|
||||||
temp.idp = i;
|
//temp.c = (char) c;
|
||||||
tete = (int) memoireP->tete;
|
//temp.idp = i;
|
||||||
memoireP->f[tete] = (MSG) temp;
|
//tete = (int) memoireP->tete;
|
||||||
tete++;
|
//memoireP->f[tete] = (MSG) temp;
|
||||||
memoireP->tete = (int) tete;
|
//tete++;
|
||||||
|
memoireP->tete++;// = (int) tete;
|
||||||
}
|
}
|
||||||
V(mutex_data);
|
V(mutex_data);
|
||||||
|
|
||||||
|
@ -83,7 +88,11 @@ int main( int argc, char **argv)
|
||||||
//V(sem_global);
|
//V(sem_global);
|
||||||
|
|
||||||
endwin();
|
endwin();
|
||||||
return (EXIT_SUCCESS);
|
|
||||||
|
// On libère la mémoire de façon propre
|
||||||
|
free(nom_de_la_fenetre);
|
||||||
|
|
||||||
|
exit(EXIT_SUCCESS);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue