Salut a tous,
je voudrais lancer un script ( .sh) a partir d'un programme c, en lui passant une liste de char * .
Je crois que le plus simple est un execvp("Monscript.sh", MaMatrice.de.Char), et ainsi MonScript.sh aura les char* dans ses variables &1, &2 etc...
Mon probleme est que je n'arrive pas a remplir MaMatrice... Je suis perdu entre les erreurs de segmentation et les erreurs de type...
Mon ideal serait de pouvoir decider dynamiquement du nombre de char* que je donne a ma matrice (enfin tableau de char* quoi...)
Voila ce que j'ai fait jusqu'a present:
(je laisse en commentaire les differents essais que j'ai pu faire, si ca peut vous eclairer...)
Merki d'avance
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 char * MyTestcchar[20]; // MyTestcchar = (char **)malloc(sizeof(char)*100); //Why doesn't it works ??? /* MyTestcchar = (char ** )malloc(sizeof(char)*10*20); MyTestcchar[0] = (char *)malloc(sizeof(char)*10); MyTestcchar[1] = (char *)malloc(sizeof(char)*10); MyTestcchar[2] = (char *)malloc(sizeof(char)*10); MyTestcchar[3] = (char *)malloc(sizeof(char)*10); MyTestcchar[4] = (char *)malloc(sizeof(char)*10); MyTestcchar[5] = (char *)malloc(sizeof(char)*10); sprintf(MyTestcchar[0], "1st case"); sprintf(MyTestcchar[1], "2nd case"); sprintf(MyTestcchar[2], "3rd case"); sprintf(MyTestcchar[3], "4th case"); sprintf(MyTestcchar[4], "5rd case"); sprintf(MyTestcchar[5], "6th case"); printf("\n\nTestcchar : %s\n",MyTestcchar[0]); */ pid_t child_script; child_script = fork(); if(child_script == 0){ if(execvp("./SampleAlexPart.sh",&MyTestcchar[0]) < 0) { printf("*** ERROR: execvp failed *** \n"); exit(1); } } else { wait(NULL); }![]()
(au fait je suis pas du tout absolument pour utiliser un execvp, ou bien faire un tableau de char*, si vous avez une idee qui pose pas de probleme d'allocation memoire... je prend)
Partager