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?
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?
Réponses:
Les différences sont des combinaisons de:
L vs V : si vous voulez passer les paramètres au programme exécuté comme
execl()
, execle()
, execlp()
etexeclpe()
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.
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.
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.
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
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.