version 1.84, 2011/09/14 17:56:00
|
version 1.88, 2011/09/19 17:33:17
|
Line 23
|
Line 23
|
#define MAIN_RPL |
#define MAIN_RPL |
#include "rpl-conv.h" |
#include "rpl-conv.h" |
|
|
#ifdef IPCS_SYSV |
|
#ifndef OS2 |
|
unsigned char *chemin_semaphores_SysV; |
|
#endif |
|
#endif |
|
|
|
|
|
/* |
/* |
================================================================================ |
================================================================================ |
Line 105 rplinit(int argc, char *argv[], unsigned
|
Line 99 rplinit(int argc, char *argv[], unsigned
|
volatile unsigned char traitement_fichier_temporaire; |
volatile unsigned char traitement_fichier_temporaire; |
|
|
errno = 0; |
errno = 0; |
|
s_queue_signaux = NULL; |
pid_processus_pere = getpid(); |
pid_processus_pere = getpid(); |
|
|
# ifdef DEBUG_MEMOIRE |
# ifdef DEBUG_MEMOIRE |
Line 114 rplinit(int argc, char *argv[], unsigned
|
Line 109 rplinit(int argc, char *argv[], unsigned
|
setvbuf(stdout, NULL, _IOLBF, 0); |
setvbuf(stdout, NULL, _IOLBF, 0); |
setvbuf(stderr, 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 |
# ifndef SEMAPHORES_NOMMES |
sem_init(&semaphore_gestionnaires_signaux, 0, 0); |
sem_init(&semaphore_gestionnaires_signaux, 0, 0); |
# else |
# else |
semaphore_gestionnaires_signaux = sem_init2(0, sem_gestionnaires_signaux); |
semaphore_gestionnaires_signaux = sem_init2(0, getpid()); |
|
|
if (semaphore_gestionnaires_signaux == SEM_FAILED) |
if (semaphore_gestionnaires_signaux == SEM_FAILED) |
{ |
{ |
Line 230 rplinit(int argc, char *argv[], unsigned
|
Line 219 rplinit(int argc, char *argv[], unsigned
|
(*s_etat_processus).chemin_fichiers_temporaires = |
(*s_etat_processus).chemin_fichiers_temporaires = |
recherche_chemin_fichiers_temporaires(s_etat_processus); |
recherche_chemin_fichiers_temporaires(s_etat_processus); |
|
|
# ifdef IPCS_SYSV |
|
# ifndef OS2 |
|
chemin_semaphores_SysV = |
|
(*s_etat_processus).chemin_fichiers_temporaires; |
|
# endif |
|
# endif |
|
|
|
insertion_thread(s_etat_processus, d_vrai); |
insertion_thread(s_etat_processus, d_vrai); |
creation_queue_signaux(s_etat_processus); |
creation_queue_signaux(s_etat_processus); |
|
|
Line 605 rplinit(int argc, char *argv[], unsigned
|
Line 587 rplinit(int argc, char *argv[], unsigned
|
option_t = d_faux; |
option_t = d_faux; |
option_v = 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) |
while((--argc) > 0) |
{ |
{ |
if ((*(++argv))[0] == '-') |
if ((*(++argv))[0] == '-') |
Line 1400 rplinit(int argc, char *argv[], unsigned
|
Line 1391 rplinit(int argc, char *argv[], unsigned
|
break; |
break; |
} |
} |
|
|
|
case '-': |
|
case ' ': |
|
{ |
|
break; |
|
} |
|
|
default : |
default : |
{ |
{ |
if ((*s_etat_processus).langue == 'F') |
if ((*s_etat_processus).langue == 'F') |
Line 2955 rplinit(int argc, char *argv[], unsigned
|
Line 2952 rplinit(int argc, char *argv[], unsigned
|
} |
} |
|
|
nanosleep(&attente, NULL); |
nanosleep(&attente, NULL); |
|
scrutation_interruptions(s_etat_processus); |
pthread_mutex_lock(&((*s_etat_processus).mutex)); |
pthread_mutex_lock(&((*s_etat_processus).mutex)); |
} |
} |
|
|
Line 3493 rplinit(int argc, char *argv[], unsigned
|
Line 3491 rplinit(int argc, char *argv[], unsigned
|
sem_destroy(&semaphore_gestionnaires_signaux); |
sem_destroy(&semaphore_gestionnaires_signaux); |
# else |
# else |
sem_post(semaphore_gestionnaires_signaux); |
sem_post(semaphore_gestionnaires_signaux); |
sem_destroy2(semaphore_gestionnaires_signaux, sem_gestionnaires_signaux); |
sem_destroy2(semaphore_gestionnaires_signaux, getpid()); |
# endif |
# endif |
|
|
destruction_queue_signaux(s_etat_processus); |
destruction_queue_signaux(s_etat_processus); |