Bonsoir,
Je dois utiliser execlp avec un nombre de parametres indéterminés stockés dans un tableau, quelqu'un peut-il me dire si il existe un moyen d'utiliser cette fonction avec un nombre de parametres variables ?
Merci
Laurent
Bonsoir,
Je dois utiliser execlp avec un nombre de parametres indéterminés stockés dans un tableau, quelqu'un peut-il me dire si il existe un moyen d'utiliser cette fonction avec un nombre de parametres variables ?
Merci
Laurent
Tu peux l'utiliser avec autant de parametres que tu veux :
Traduction :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 $ man execlp int execlp(const char *file, const char *arg, ...); The const char *arg and subsequent ellipses in the execl(), execlp(), and execle() functions can be thought of as arg0, arg1, ..., argn. Together they describe a list of one or more pointers to null-terminated strings that represent the argument list available to the executed program. The first argument, by convention, should point to the file name associated with the file being executed. The list of arguments must be terminated by a NULL pointer.
Tu dois l'appeller en lui filant en premier parametre le chemin du programme que tu execute, puis une liste d'arguments. Chaque argument est une chaine, et le premier est le nom du programme.
Tu peux faire reference au programme par un chemin relatif ou absolu, sachant que si le chemin est relatif execlp() va utiliser le contenu de PATH pour le trouver.
Le dernier argument est un 0.
Exemple (appel de ls sous Unix, mais fonctionne pareil ailleurs) :
N'hesite pas si tu as d'autres questions ou si je n'ai pas ete clair, il se fait tard
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 Avec un chemin absolu : execlp("/bin/ls", "ls", "-l", "-a", "/dev", 0); ou avec un chemin relatif : execlp("ls", "ls", "-l", "-a", "/dev", 0);![]()
Remarque : si ta liste de parametre est stockee dans un tableau, tu peux utiliser une fonction plus appropriee :
execvp est ton ami : il attend en parametre le nom du programme, (meme remarque que precedement sur les chemins relatifs ou absolus) et le deuxieme parametre est un tableau de chaines.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 int execvp(const char *file, char *const argv[]);
Juste quelques restrictions:
- Le premier element du tableau est le nom du programme
- Le dernier est un 0 (un pointeur NULL si on veut etre rigoureux.)
C'est exactement ce qu'il me faut Jack_serious
Merci beaucoup
Partager