Wofür werden die verschiedenen Versionen von exec in C und C++ verwendet?

Lesezeit: 3 Minuten

Benutzeravatar von node ninja
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?

Christos Benutzeravatar
Christo

Die Unterschiede sind Kombinationen aus:

  1. L gegen V: ob Sie die Parameter an das ausgeführte Programm übergeben möchten als

    • L: einzelne Parameter im Aufruf (variable Argumentliste): execl(), execle(), execlp()und execlpe()
    • v: als Array von char* 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.

  2. 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.

  3. 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

Benutzeravatar von Konstantin Burlachenko
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


1421140cookie-checkWofür werden die verschiedenen Versionen von exec in C und C++ verwendet?

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy