Dies sind alle Versionen von exec, die in C (und C ++) verwendet werden können.
execl
execle
execlp
execv
execve
execvp
Was ist der Unterschied zwischen ihnen? Woher weißt du, welches du verwenden sollst?
Die Unterschiede sind Kombinationen von:
L vs V : ob Sie die Parameter als an das ausgeführte Programm übergeben möchten
execl()
, execle()
, execlp()
, undexeclpe()
execv()
, execve()
, execvp()
, undexecvpe()
Das Array-Format ist nützlich, wenn die Anzahl der Parameter, die an den ausgeführten Prozess gesendet werden sollen, variabel ist - wie im Voraus nicht bekannt, sodass Sie in einem Funktionsaufruf keine feste Anzahl von Parametern eingeben können.
E : Mit den Versionen mit einem 'e' am Ende können Sie zusätzlich ein Array von char * übergeben, bei dem es sich um eine Reihe von Zeichenfolgen handelt, die der Umgebung der erzeugten Prozesse hinzugefügt wurden, bevor das ausgeführte Programm gestartet wird. Noch eine andere Art, Parameter zu übergeben.
P : Die Versionen mit 'p' verwenden die Umgebungsvariable PATH
, um nach der ausführbaren Datei zu suchen, deren Ausführung ausgeführt werden soll. Bei Versionen ohne 'p' muss dem Dateinamen der ausführbaren Datei ein absoluter oder relativer Dateipfad vorangestellt werden, wenn er sich nicht im aktuellen Arbeitsverzeichnis befindet.
Opengroup ist eine der besten allgemeinen Referenzen für Kernfunktionen von c / c ++.
Die Dokumente für exec * finden Sie hier: http://pubs.opengroup.org/onlinepubs/009695399/functions/environ.html
Es ist die Posix-Erweiterung der C-Laufzeitbibliothek. Wenn die offizielle Posix-Dokumentation nicht ausreicht, kann ich das Buch - Samuel P. Harbison, Guy L. Steele, 2002 "CA Reference" Seite 416 - empfehlen, diese Frage zu behandeln.
quelle