À quoi servent les différentes versions d'exec en C et C ++?

91

Ce sont toutes les versions d'exec qui peuvent être utilisées en C (et C ++)

execl
execle
execlp
execv
execve
execvp

Quelle est la différence entre eux? Comment savez-vous lequel utiliser?

noeud ninja
la source

Réponses:

181

Les différences sont des combinaisons de:

  1. L vs V : si vous voulez passer les paramètres au programme exécuté comme

    • L : paramètres individuels dans l'appel (liste variable d'arguments): execl(), execle(), execlp()etexeclpe()
    • V : comme un tableau de char * execv(), execve(), execvp()etexecvpe()

    Le format de tableau est utile lorsque le nombre de paramètres à envoyer au processus exécuté est variable - comme cela n'est pas connu à l'avance, vous ne pouvez donc pas mettre un nombre fixe de paramètres dans un appel de fonction.

  2. E : Les versions avec un «e» à la fin vous permettent en plus de passer un tableau de char * qui sont un ensemble de chaînes ajoutées à l'environnement des processus générés avant le lancement du programme exécuté. Encore une autre façon de passer des paramètres, vraiment.

  3. P : Les versions avec «p» là-dedans utilisent la variable d'environnement PATH pour rechercher le fichier exécutable nommé à exécuter. Les versions sans «p» nécessitent qu'un chemin de fichier absolu ou relatif soit ajouté au nom de fichier de l'exécutable s'il ne se trouve pas dans le répertoire de travail actuel.

Christo
la source
1
Meilleure explication que j'ai vue jusqu'à présent. Il est presque aussi court que la documentation / référence officielle, mais il est mille fois plus expressif, informatif et compréhensible. Merci.
Akito
5

Opengroup est l'une des meilleures références générales pour les fonctions c / c ++ de base.

La documentation pour exec * est ici: http://pubs.opengroup.org/onlinepubs/009695399/functions/environ.html

IanNorton
la source
2
cela ne répond pas vraiment à la question et n'est qu'un lien.
Jean-François Fabre
Avant d'arriver ici, j'ai lu la documentation sur le site, mais cela n'a pas beaucoup aidé. Les explications sont très courtes, même si elles doivent être élaborées. De plus, il est difficile de trouver la bonne explication de ce que vous recherchez, si vous effectuez une recherche à partir de zéro.
Akito
-4

C'est l'extension Posix de la bibliothèque d'exécution C. Si la documentation officielle Posix est insuffisante, je peux recommander un livre - Samuel P. Harbison, Guy L.Steele, 2002 «CA Reference», page 416 - couvrir cette question.

Bruziuz
la source
2
Bien que ce lien puisse répondre à la question, il est préférable d'inclure les parties essentielles de la réponse ici et de fournir le lien pour référence. Les réponses aux liens uniquement peuvent devenir invalides si la page liée change. - De l'avis
31piy
Les liens étaient vers amazon et vers posxis standart pour être utiles au lecteur. Ok, j'ai supprimé les liens comme vous l'avez demandé, même si je ne suis pas d'accord pour dire que c'est mieux. Supprimez votre donwvote s'il est maintenant plus lisible.
bruziuz
1
Je n'ai pas voté contre votre réponse. Je viens d'avoir mon avis sur votre réponse, que je trouvais de mauvaise qualité. Je ne voulais pas supprimer les liens. Le but ici est d'inclure des extraits pertinents du lien qui aide les futurs lecteurs à comprendre la réponse instantanément. Le simple fait de publier les liens dans la réponse n'aide personne.
31piy