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...)

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);
				}
Merki d'avance
(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 )