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 wissen Sie, welches Sie verwenden sollen?
Knoten-Ninja
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 wissen Sie, welches Sie verwenden sollen?
Christo
Die Unterschiede sind Kombinationen aus:
L gegen V: ob Sie die Parameter an das ausgeführte Programm übergeben möchten als
execl()
, execle()
, execlp()
und execlpe()
execv()
, execve()
, execvp()
und execvpe()
Das Array-Format ist nützlich, wenn die Anzahl der Parameter, die an den ausgeführten Prozess gesendet werden sollen, variabel ist – da dies im Voraus nicht bekannt ist, sodass Sie keine feste Anzahl von Parametern in einen Funktionsaufruf einfügen können.
E: Die Versionen mit einem ‘e’ am Ende lassen Sie zusätzlich ein Array von char* übergeben, das eine Reihe von Zeichenfolgen ist, die der Umgebung der erzeugten Prozesse hinzugefügt werden, bevor das ausgeführte Programm startet. Noch eine andere Art, Parameter zu übergeben, wirklich.
P: Die Versionen mit ‘p’ darin verwenden die Umgebungsvariable PATH
um nach der ausführbaren Datei mit dem Namen zu suchen, die ausgeführt werden soll. Die Versionen ohne das ‘p’ erfordern, dass dem Dateinamen der ausführbaren Datei ein absoluter oder relativer Dateipfad vorangestellt wird, wenn sie sich nicht im aktuellen Arbeitsverzeichnis befindet.
Opengroup ist eine der besten allgemeinen Referenzen für Kernfunktionen von c/c++.
Die Dokumente für exec* sind hier: http://pubs.opengroup.org/onlinepubs/009695399/functions/environ.html
Dies beantwortet die Frage nicht wirklich und ist nur ein Link.
– Jean-Francois Fabre
♦
9. April 2018 um 15:31 Uhr
Bevor ich hier ankam, habe ich die Dokumentation auf der Website gelesen, aber es hat nicht viel geholfen. Die Erklärungen sind sehr kurz, obwohl sie ausführlich sein sollten. Außerdem ist es schwierig, die richtige Erklärung für das zu finden, wonach Sie suchen, wenn Sie von Grund auf neu suchen.
– Akito
2. Oktober 2020 um 12:44 Uhr
Konstantin Burlachenko
Es ist eine Posix-Erweiterung der C-Laufzeitbibliothek. Wenn die offizielle Posix-Dokumentation unzureichend ist, kann ich das Buch empfehlen – Samuel P. Harbison, Guy L. Steele, 2002 “CA Reference” Seite # 416 – behandelt diese Frage.
Während dieser Link die Frage beantworten kann, ist es besser, die wesentlichen Teile der Antwort hier einzufügen und den Link als Referenz bereitzustellen. Nur-Link-Antworten können ungültig werden, wenn sich die verlinkte Seite ändert. – Aus Bewertung
– 31piy
14. Dezember 2017 um 5:17 Uhr
Die Links waren zu Amazon und zu Posxis Standart, um für den Leser nützlich zu sein. Ok, ich habe Links entfernt, wie Sie gefragt haben, auch wenn ich nicht der Meinung bin, dass dies besser ist. Entfernen Sie Ihr Donwvote, wenn es jetzt besser lesbar ist.
– Konstantin Burlachenko
14. Dezember 2017 um 23:29 Uhr
Ich habe Ihre Antwort nicht abgelehnt. Ich hatte gerade meine Bewertung zu Ihrer Antwort, die meiner Meinung nach von geringer Qualität war. Ich wollte die Links nicht entfernen. Der Punkt hier ist, relevante Auszüge aus dem Link aufzunehmen, die den zukünftigen Lesern helfen, die Antwort sofort zu verstehen. Nur die Links in der Antwort zu posten, hilft niemandem.
– 31piy
15. Dezember 2017 um 3:43 Uhr