[C] Nombre variable d'argument s

Le problème exposé dans ce sujet a été résolu.

Hello,

J’ai besoin d’utiliser la fonction execlp. Celle-ci prend un nombre variable d’arguments. L’utilisateur me donne une commande sous la forme : char** argv. Je dois alors executer : execlp(argv[1], argv[1], argv[2], argv[3], ...) le problème c’est qu’à priori je ne sais pas quelle taille fait mon tableau char** argv.

Du coup je ne vois pas du tout comment faire … Des idées ?

Merci beaucoup.

+0 -0

Merci pour ta réponse.

Aaaah effectivement si execvp fait pareil que execlp mais prend en argument un tableau ça me convient parfaitement !

EDIT : Ca donne quelque chose comme : execlp(argv[0], argv[0], argv[1], ...) = execvp(argv[0], argv) ?

+0 -0

Salut,

De mémoire oui. Mais attention au fait que le premier argument doit être le chemin du fichier à exécuter, ce qui n’est pas toujours équivalent à argv[0].

entwanne

Juste sur ce point, le p final de execvp() indique qu’elle recherche la commande dans les différents dossiers spécifiés par la variable PATH. Le chemin vers la commande n’est donc pas nécessaire.

Sinon, argv[0] ne doit effectivement pas être passé dans ce cas ci puisqu’il s’agira du nom du programme exécuté et non de celui à exécuter. Ce serait donc plutôt execvp(argv[1], argv + 1).

+0 -0
Connectez-vous pour pouvoir poster un message.
Connexion

Pas encore membre ?

Créez un compte en une minute pour profiter pleinement de toutes les fonctionnalités de Zeste de Savoir. Ici, tout est gratuit et sans publicité.
Créer un compte