Bonsoir,
je dois créer un interpreteur de commandes qui lit les commandes dans un fichier et les exécute en créant des processus. Pour lire la commande, je me suis fait une fonction qui lit une ligne et la dispose dans un tableau d'arguments pour utiliser les fonctions execs. Mon problème survient lorsque je fais la création des processus, le dernier processus est toujours créer 2-3 fois au lieu de une. Ma fonction pour lire les commandes marche parfaitement et ignore les ligne vides lorsque je la test dans les process. Ma boucle pour la création des processus ressemble à ceci:
Pour certaines raisons la derniere ligne s'exécute toujours 2 fois meme lorsque la condition est rencontré et qu'il devrait sortir de la boucle... je ne comprends pas puisqu'il ne le fait pas lorsqu'il n'y a pas création des processus.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37 while (!feof(fichier)) { lireLigneCmd(fichier,tabParams); i = 0; while (tabParams[i] != NULL) { printf("%s", tabParams[i]); i++; } if (tabParams[0] != NULL) { pid = fork(); if (pid < 0) { printf("Une erreur c'est produite lors de la creation du processus..."); } if (pid != 0) { waitpid(pid,&statut,0); } else { if (*(tabParams[0]) != '/') { execvp(tabParams[0],tabParams); } else { execv(tabParams[0],tabParams); } } } else { printf("Ligne ne contenant aucune commande, celle-ci est ignoree...\n"); } }
Merci d'avance pour votre aide.
Partager