Bonjour
je suis bien embêté pour modifier le premier argument
que ce soit : execve,execvp,execv et execl,execlp,execle
chacun a en premier argument const char
alors j'ai bien lu le man et un autre site qui propose des exemples simples
http://pubs.opengroup.org/onlinepubs...ions/exec.html
http://www.linux-france.org/article/...3/execv-3.html
j'ai tenté avec toutes les formes primitives exec
ici je fais avec execl mais le problème je pense viens du retour de la fonction qui pourtant change bien les variables
dans une function :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 void function(char pgm[40], char *argu[]) char chem[8]="/bin/"; strcat(chem, pgm); // On concatène chem dans pgm2 argu[0] = chem; ... // je change aussi argu[1] = pgm; argu[2] = parametre; //tout se passe bien }
dans le programme principale:
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 char *_path=NULL; //const char *_path=NULL;// j'ai bien essayé aussi avec const mais c'est pas ça le problème char *argv[3]; fprintf(stdout,"Nom du pg a lancer (exit pour sortir)\n: "); fscanf(stdin, "%[^\n]", pgm); // pour l'instant je lance juste ls pour tester donc dans function je chem n'a que taille 8 j'ai aussi pensé au problème du /0 final function(pgm, argv); fprintf(stdout, "on continue 1 avec : %s %s %s %s\n", argv[0],argv[1],argv[2],_path);// cela affiche bien : bin/ls ls (null) (null) //argv[0]="/bin/ls"; _path=argv[0]; // après retour de la fonction //_path="/bin/ls"; fprintf(stdout, "on continue 1 avec : %s %s %s %s\n", argv[0],argv[1],argv[2],_path);///cela affiche bien : bin/ls ls (null) /bin/ls //pourtant : execl(_path, argv[1],argv[2],NULL);// pas OK après la fonction pour la variable path execl(_path, argv[1],argv[2],NULL);// Ok si _path="/bin/ls"; ou si argv[0]="/bin/ls"; _path=argv[0];
donc je ne comprend donc pas ce qui ne vas pas ?
merci à vous de m'aider à trouver une explication et une solution
Partager