--- rpl/src/rpl.c 2011/09/14 17:56:00 1.84 +++ rpl/src/rpl.c 2011/09/16 09:09:35 1.86 @@ -105,6 +105,7 @@ rplinit(int argc, char *argv[], unsigned volatile unsigned char traitement_fichier_temporaire; errno = 0; + s_queue_signaux = NULL; pid_processus_pere = getpid(); # ifdef DEBUG_MEMOIRE @@ -114,12 +115,6 @@ rplinit(int argc, char *argv[], unsigned setvbuf(stdout, NULL, _IOLBF, 0); setvbuf(stderr, NULL, _IOLBF, 0); - // mutex_liste_thread est dévérouillé par défaut. - // mutex_gestionnaires_signaux et mutex_gestionnaires_signaux_atomique - // sont verrouillés par défaut. - - pthread_mutex_lock(&mutex_gestionnaires_signaux_atomique); - # ifndef SEMAPHORES_NOMMES sem_init(&semaphore_gestionnaires_signaux, 0, 0); # else @@ -605,6 +600,15 @@ rplinit(int argc, char *argv[], unsigned option_t = d_faux; option_v = d_faux; + // Lorsque le programme est appelé depuis un shebang, argv[0] contient + // le chemin du programme et argv[1] tous les arguments. + // argv[2] contient quant à lui le nom du script RPL/2. + // + // Exemple : + // argv[0] : /usr/local/bin/rpl + // argv[1] : -csdp -t 800 + // argv[2] : ./on_exit.rpl + while((--argc) > 0) { if ((*(++argv))[0] == '-') @@ -1400,6 +1404,12 @@ rplinit(int argc, char *argv[], unsigned break; } + case '-': + case ' ': + { + break; + } + default : { if ((*s_etat_processus).langue == 'F') @@ -2955,6 +2965,7 @@ rplinit(int argc, char *argv[], unsigned } nanosleep(&attente, NULL); + scrutation_interruptions(s_etat_processus); pthread_mutex_lock(&((*s_etat_processus).mutex)); }