Indexation + ajout de commentaires

master
Philippe Pittoli 2011-03-28 12:25:51 +02:00
parent df1a36fa2e
commit f8c0559289
2 changed files with 26 additions and 11 deletions

View File

@ -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 */

View File

@ -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.