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


86

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?

Antworten:


177

Die Unterschiede sind Kombinationen von:

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

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

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

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



-4

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.


1
Während dieser Link die Frage beantworten kann, ist es besser, die wesentlichen Teile der Antwort hier aufzunehmen und den Link als Referenz bereitzustellen. Nur-Link-Antworten können ungültig werden, wenn sich die verknüpfte Seite ändert. - Von der Überprüfung
31piy

Die Links waren zu Amazon und zu Posxis Standard, um für den Leser nützlich zu sein. Ok, ich habe Links entfernt, als Sie gefragt haben, auch wenn ich nicht der Meinung bin, dass dies besser ist. Entfernen Sie Ihre Donwvote, wenn sie jetzt besser lesbar ist.
Bruziuz

Ich habe Ihre Antwort nicht abgelehnt. Ich hatte gerade meine Bewertung zu Ihrer Antwort, die ich für von geringer Qualität hielt. Ich wollte die Links nicht entfernen. Hier geht es darum, 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.
31.
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.