web-dev-qa-db-fra.com

Quelles sont les différentes versions d'exec utilisées en C et C ++?

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?

79
node ninja

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 d'arguments variables): execl(), execle(), execlp() et execlpe()
    • V : sous forme de tableau de caractères * execv(), execve(), execvp(), et execvpe()

    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 outre de passer un tableau de char * qui est 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 de chemin d'environnement pour rechercher le fichier exécutable nommé à exécuter. Les versions sans le "p" nécessitent un chemin de fichier absolu ou relatif à ajouter au nom de fichier de l'exécutable s'il ne se trouve pas dans le répertoire de travail actuel.

161
Christo

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

Les documents pour exec * sont ici: http://pubs.opengroup.org/onlinepubs/009695399/functions/environ.html

4
IanNorton