Inhalt
Dasexec Funktionsfamilie ersetzt das aktuelle Prozessabbild durch ein neues Prozessabbild. Die hier beschriebenen Funktionen sind Frontends für die Funktionausführen(2).
Das ursprüngliche Argument für diese Funktionen ist der Pfadname einer Datei, die ausgeführt werden soll.
Dasconst char * arg und nachfolgende Ellipsen in derexecl, execlp, undausführen Funktionen können als gedacht werdenarg0, arg1, ..., argn. Zusammen beschreiben sie eine Liste von einem oder mehreren Zeigern auf nullterminierte Zeichenfolgen, die die Argumentliste darstellen, die dem ausgeführten Programm zur Verfügung steht. Das erste Argument sollte gemäß Konvention auf den Dateinamen verweisen, der der ausgeführten Datei zugeordnet ist. Die Liste der ArgumenteMuss beendet werden durch aNULL Zeiger.
Dasexecv undexecvp Funktionen bieten ein Array von Zeigern auf nullterminierte Zeichenfolgen, die die Argumentliste darstellen, die dem neuen Programm zur Verfügung steht. Das erste Argument sollte gemäß Konvention auf den Dateinamen verweisen, der der ausgeführten Datei zugeordnet ist. Das Array von ZeigernMuss beendet werden durch aNULL Zeiger.
Dasausführen Die Funktion gibt auch die Umgebung des ausgeführten Prozesses an, indem sie den Anweisungen folgtNULLZeiger, der die Liste der Argumente in der Parameterliste oder den Zeiger auf das argv-Array mit einem zusätzlichen Parameter beendet. Dieser zusätzliche Parameter ist ein Array von Zeigern auf nullterminierte Zeichenfolgen undMuss beendet werden durch aNULL Zeiger. Die anderen Funktionen übernehmen die Umgebung für das neue Prozessabbild aus der externen VariablenUmwelt im aktuellen Prozess.
Einige dieser Funktionen haben eine spezielle Semantik.
Die Funktionenexeclp undexecvp dupliziert die Aktionen der Shell bei der Suche nach einer ausführbaren Datei, wenn der angegebene Dateiname keinen Schrägstrich (/) enthält. Der Suchpfad ist der Pfad, der in der Umgebung von angegeben wirdPFAD Variable. Wenn diese Variable nicht angegeben wird, wird der Standardpfad ``: / bin: / usr / bin '' verwendet. Darüber hinaus werden bestimmte Fehler speziell behandelt.
Wenn die Berechtigung für eine Datei verweigert wird (der Versuchausführen ist zurückgekommenEACCES) suchen diese Funktionen den Rest des Suchpfads weiter. Wenn jedoch keine andere Datei gefunden wird, werden sie mit der globalen Variablen zurückgegebenerrno einstellenEACCES.
Wenn der Header einer Datei nicht erkannt wird (der Versuchausführen ist zurückgekommenENOEXEC) führen diese Funktionen die Shell mit dem Pfad der Datei als erstem Argument aus. (Wenn dieser Versuch fehlschlägt, wird keine weitere Suche durchgeführt.)
Rückgabewert
Wenn einer derexec Funktionen zurück, ein Fehler ist aufgetreten. Der Rückgabewert ist -1 und die globale Variableerrno wird eingestellt, um den Fehler anzuzeigen.
Verwenden Sie dieMann Befehl (% Mann), um zu sehen, wie ein Befehl auf Ihrem Computer verwendet wird.
Name
execl, execlp, execle, execv, execvp - Führe eine Datei aus
Zusammenfassung
#einschließen extern char ** environ; int execl (const char *Pfad, const char *arg, ...); int execlp (const char *Datei, const char *arg, ...); int execle (const char *Pfad, const char *arg , ..., char * constenvp[]); int execv (const char *Pfad, char * constargv[]); int execvp (const char *Datei, char * constargv[]);