Indexation + ajout de commentaires
parent
df1a36fa2e
commit
f8c0559289
|
@ -22,13 +22,19 @@ void quitter(int signal);
|
||||||
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)
|
||||||
{
|
{
|
||||||
|
// On ne rentre pas de numéro => on quitte en disant comment utiliser le programme
|
||||||
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); }
|
||||||
char c;
|
char c;
|
||||||
const char CTRL_D = 4 ;
|
const char CTRL_D = 4 ;
|
||||||
int shmid;
|
int shmid;
|
||||||
int shm_key = atoi(argv[1]);
|
|
||||||
|
|
||||||
WINDOW * fenetre ;
|
// On quitte si on reçoit ces signaux
|
||||||
|
signal(SIGHUP, quitter);
|
||||||
|
signal(SIGINT, quitter);
|
||||||
|
signal(SIGQUIT, quitter);
|
||||||
|
|
||||||
|
// Récupération du numéro d'IPC
|
||||||
|
int shm_key = atoi(argv[1]);
|
||||||
|
|
||||||
key_t sem_key_data = MUTEX_DATA;
|
key_t sem_key_data = MUTEX_DATA;
|
||||||
key_t sem_key_tpa = MUTEX_TPA;
|
key_t sem_key_tpa = MUTEX_TPA;
|
||||||
|
@ -36,16 +42,23 @@ int main( int argc, char **argv)
|
||||||
shmid = shmget(shm_key, sizeof(MEMP), 0766 | IPC_CREAT);
|
shmid = shmget(shm_key, sizeof(MEMP), 0766 | IPC_CREAT);
|
||||||
|
|
||||||
|
|
||||||
// On quitte si on reçoit ces signaux
|
|
||||||
signal(SIGHUP, quitter);
|
|
||||||
signal(SIGINT, quitter);
|
|
||||||
signal(SIGQUIT, quitter);
|
|
||||||
|
|
||||||
if (shmid == -1) { perror("shmget"); exit(EXIT_FAILURE); }
|
if (shmid == -1) { perror("shmget"); exit(EXIT_FAILURE); }
|
||||||
|
|
||||||
if((memoireP = (MEMP *) shmat(shmid, 0 , 0766)) ==(void *) -1) { perror("shmat"); exit(EXIT_FAILURE); }
|
if((memoireP = (MEMP *) shmat(shmid, 0 , 0766)) ==(void *) -1)
|
||||||
if((mutex_data = open_sem( sem_key_data)) == -1) { perror("open_sem"); exit(EXIT_FAILURE); }
|
{
|
||||||
if((mutex_tpa = open_sem( sem_key_tpa)) == -1) { perror("open_sem"); exit(EXIT_FAILURE); }
|
perror("shmat");
|
||||||
|
exit(EXIT_FAILURE);
|
||||||
|
}
|
||||||
|
if((mutex_data = open_sem( sem_key_data)) == -1)
|
||||||
|
{
|
||||||
|
perror("open_sem");
|
||||||
|
exit(EXIT_FAILURE);
|
||||||
|
}
|
||||||
|
if((mutex_tpa = open_sem( sem_key_tpa)) == -1)
|
||||||
|
{
|
||||||
|
perror("open_sem");
|
||||||
|
exit(EXIT_FAILURE);
|
||||||
|
}
|
||||||
|
|
||||||
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++);
|
||||||
|
@ -59,6 +72,9 @@ int main( int argc, char **argv)
|
||||||
memoireP->tpa[i] = 0;
|
memoireP->tpa[i] = 0;
|
||||||
V(mutex_tpa);
|
V(mutex_tpa);
|
||||||
|
|
||||||
|
// Initialisation de la fenêtre
|
||||||
|
WINDOW * fenetre ;
|
||||||
|
|
||||||
initscr() ; /* initialisation (obligatoire) de curses */
|
initscr() ; /* initialisation (obligatoire) de curses */
|
||||||
noecho() ; /* suppression de l'echo des caracteres tapes*/
|
noecho() ; /* suppression de l'echo des caracteres tapes*/
|
||||||
cbreak() ; /* lecture non bufferisee */
|
cbreak() ; /* lecture non bufferisee */
|
||||||
|
|
|
@ -11,4 +11,3 @@ Idem pour le producteur, qui peut également quitter avec un CTRL_D.
|
||||||
|
|
||||||
Le consommateur est programmé pour quitter si les producteurs actifs partent.
|
Le consommateur est programmé pour quitter si les producteurs actifs partent.
|
||||||
|
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue