Bonjour;
Mon programme doit cr�er des processus fils afin de lancer les commandes pass�es au main du programme dans argv, voici mon code:
Code C : 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
38
39
40 #include <stdio.h> #include <stdlib.h> #include <sys/types.h> #include <sys/wait.h> #include <unistd.h> #include <string.h> #define NBMOTSMAX 20 int main(int argc, char *argv[]){ pid_t pid; int nbMots = argc-1, status, i; char *commandes[NBMOTSMAX]; for(i=0; i < nbMots; i++) { commandes[i] = argv[i+1]; } commandes[nbMots]=(char *) NULL; for(i=0; i < nbMots; i++){ switch(pid=fork()){ case -1: perror("Processus Fils"); break; case 0: printf("[%d] Je lance %s :\n", getpid(), commandes[i]); execvp(commandes[i], commandes); exit(1); break; default: printf("[%d] J'ai délégué %s à %d. J'attends sa fin...\n", getpid(), commandes[i], pid); wait(&status); printf("[%d] %d terminé.\n", getpid(), pid); } } printf("[%d] J'ai fini.\n", getpid()); return 0; }
Mais j'ai un gros probl�me j'ai du mal a comprendre comme ex�cuter execvp m�me en lisant le man, vu l'ex�cution du programme je pense que mon erreur vient de la premi�re case du tableau "commandes" qui doit contenir un lien vers le fichier executable mais apr�s avoir tent� plusieurs choses rien ne marche, voila un exemple de l'ex�cution du programme avec ./exo2TP1 "sleep 5" pwd date j'obtiens la chose suivante:
J'ai donc tent� de remplacer la premi�re case du tableau commande par plusieurs fichiers ex�cutable contentant les commandes linux comme /bin mais peu concluant.
Voila si quelqu'un pourrait m'aider � utiliser execvp s'il vous plait car la je suis vraiment dans l'impasse
Merci d'avance.
Partager