Provided by: manpages-de-dev_1.11-1_all 

BEZEICHNUNG
execl, execlp, execle, execv, execvp, execvpe - führt eine Datei aus
ÜBERSICHT
#include <unistd.h>
extern char **environ;
int execl(const char *path, const char *arg, …
/* (char *) NULL */);
int execlp(const char *file, const char *arg, …
/* (char *) NULL */);
int execle(const char *path, const char *arg, …
/*, (char *) NULL, char * const envp[] */);
int execv(const char *path, char *const argv[]);
int execvp(const char *file, char *const argv[]);
int execvpe(const char *file, char *const argv[],
char *const envp[]);
Mit Glibc erforderliche Makros (siehe feature_test_macros(7)):
execvpe(): _GNU_SOURCE
BESCHREIBUNG
Die exec()-Funktionsfamilie ersetzt den aktuellen Programmcode im Speicher mit einem neuen Prozessabbild.
Die in dieser Handbuchseite beschriebenen Bibliotheksfunktionen sind Frontends zu der Systemfunktion
execve(2). (Siehe die Handbuchseite von execve(2) für weitere Details über das Ersetzen des aktuellen
Prozessabbilds.)
Das erste Argument dieser Funktionen ist der Name der Datei, die ausgeführt werden soll.
Der Ausdruck const char *arg und die nachfolgenden Auslassungspunkte (»...«) der Funktionen execl(),
execlp() und execle() sind als eine Liste mit einer unbestimmten Anzahl von Parametern arg0, arg1, ...,
argn zu verstehen. Zusammen stellen sie eine Liste mit einem oder mehreren Zeigern auf nullterminierte
(mit '\0' abgeschlossenen) Zeichenketten dar, die dem aufgerufenen Programm als Argumentliste verfügbar
ist. Der erste Eintrag sollte konventionsgemäß ein Zeiger auf den Dateinamen des aufgerufenen Programms
sein. Die Parameterliste muss mit einem Null-Zeiger abgeschlossen werden und weil es variadische
Funktionen sind, muss für diesen Zeiger eine Typumwandlung (cast) zu (char *) NULL durchgeführt werden.
Die Funktionen execv(), execvp() und execvpe() übergeben die Aufrufparameter an das Folgeprogramm in
einem Feld von Zeigern auf nullterminierte Zeichenketten. Das erste Argument sollte konventionsgemäß auf
den Namen der auszuführenden Datei weisen. Der Feld von Zeigern muss mit einem Null-Zeiger als letztem
Eintrag abgeschlossen werden.
Die Funktionen execle() und execvpe() ermöglichen dem aufrufenden Programm, die Umgebung für das
auszuführende Programm mittels des Arguments envp zu übergeben. Das Argument envp ist ein Feld von
Zeigern auf nullterminierte Zeichenketten und muss mit einem Null-Zeiger als letztem Eintrag
abgeschlossen werden. Die übrigen Funktionen übernehmen die Umgebungsvariablen für den neuen Prozess von
der externen Variablen environ im aufrufenden Prozess.
Spezielle Semantik für execlp() und execvp()
Die Funktionen execlp(), execvp() und execvpe() suchen ebenso wie die Shell nach einem ausführbaren
Programm, wenn der angegebene Dateiname keinen Schrägstrich (/) enthält. Die Datei wird in der durch
Doppelpunkte getrennten Liste von Verzeichnis-Pfadnamen in der Umgebungsvariablen PATH gesucht. Wenn
diese Variable nicht definiert ist, ist die Pfadliste standardmäßig das aktuelle Verzeichnis, gefolgt von
der Verzeichnisliste, die von confstr(_CS_PATH) zurückgegeben wird. (Dieser Aufruf von confstr(3) gibt in
der Regel den Wert »/bin:/usr/bin« zurück.).
Falls der angegebene Dateiname einen Schrägstrich enthält, wird PATH ignoriert und die Datei mit dem
angegebenen Pfadnamen ausgeführt.
Zusätzlich werden bestimmte Fehler speziell behandelt.
Falls die Ausführung einer gefundenen Datei verweigert wird (die versuchte Ausführung von execve(2)
führte zum Fehler EACCES), werden diese Funktionen im restlichen Suchpfad weitersuchen. Wenn aber keine
andere Datei gefunden wird, kehren diese Funktionen zurück und setzen errno auf EACCES.
Wenn der Header einer Datei nicht erkannt wird (die versuchte Ausführung von execve(2) führte zum Fehler
ENOEXEC), starten diese Funktionen die Shell (/bin/sh) mit dem Pfadnamen der Datei als erstes Argument.
(Wenn dieser Versuch fehlschlägt, wird die Suche abgebrochen.)
RÜCKGABEWERT
Die exec()-Funktionen kehren nur in das aufrufende Programm zurück, wenn ein Fehler aufgetreten ist. Der
Rückgabewert ist -1 und errno wird auf die entsprechende Fehlerkennung gesetzt.
FEHLER
Alle diese Funktionen können fehlschlagen und errno auf jeden möglichen Fehler setzen, der für execve(2)
angegeben ist.
VERSIONEN
Die Funktion execvpe() kam erstmals in Glibc 2.11 vor.
ATTRIBUTE
Siehe attributes(7) für eine Erläuterung der in diesem Abschnitt verwandten Ausdrücke.
┌───────────────────────────────┬───────────────────────┬─────────────┐
│ Schnittstelle │ Attribut │ Wert │
├───────────────────────────────┼───────────────────────┼─────────────┤
│ execl(), execle(), execv() │ Multithread-Fähigkeit │ MT-Safe │
├───────────────────────────────┼───────────────────────┼─────────────┤
│ execlp(), execvp(), execvpe() │ Multithread-Fähigkeit │ MT-Safe env │
└───────────────────────────────┴───────────────────────┴─────────────┘
KONFORM ZU
POSIX.1-2001, POSIX.1-2008.
Die Funktion execvpe() ist eine GNU-Erweiterung.
ANMERKUNGEN
Auf einigen anderen Systemen befindet sich das aktuelle Arbeitsverzeichnis als Maßnahme gegen Trojanische
Pferde im Standardpfad (wird verwendet, wenn die Umgebung die Variable PATH nicht enthält) hinter /bin
und /usr/bin. Linux verwendet hier den traditionellen Standardpfad mit dem »aktuellen Verzeichnis
zuerst«.
Das Fehlerverhalten von execlp() und execvp() beim Versuch Programme zu starten ist historische Praxis
und traditionell undokumentiert. Daher ist dieses Verhalten auch nicht durch den POSIX-Standard
spezifiziert. BSD (und möglicherweise andere Systeme) schlafen automatisch und wiederholen den Versuch,
wenn ETXTBSY angetroffen wird. Linux behandelt es wie einen harten Fehler und kehrt sofort zurück.
Traditionell ignorierten die Funktionen execlp() und execvp() alle Fehler bis auf die oben beschriebenen
sowie ENOMEM und E2BIG, bei deren Auftreten sie ins Hauptprogramm zurückkehrten. Sie kehren jetzt ins
Hauptprogramm zurück, wenn ein anderer Fehler als die oben beschriebenen auftritt.
SIEHE AUCH
sh(1), execve(2), execveat(2), fork(2), ptrace(2), fexecve(3), environ(7)
KOLOPHON
Diese Seite ist Teil der Veröffentlichung 4.04 des Projekts Linux-man-pages. Eine Beschreibung des
Projekts, Informationen, wie Fehler gemeldet werden können sowie die aktuelle Version dieser Seite finden
sich unter http://www.kernel.org/doc/man-pages/.
ÜBERSETZUNG
Die deutsche Übersetzung dieser Handbuchseite wurde von Roland Krause <Rokrause@aol.com>, Martin Schulze
<joey@infodrom.org> und Martin Eberhard Schauer <Martin.E.Schauer@gmx.de> erstellt.
Diese Übersetzung ist Freie Dokumentation; lesen Sie die GNU General Public License Version 3 oder neuer
bezüglich der Copyright-Bedingungen. Es wird KEINE HAFTUNG übernommen.
Wenn Sie Fehler in der Übersetzung dieser Handbuchseite finden, schicken Sie bitte eine E-Mail an
<debian-l10n-german@lists.debian.org>.
GNU 19. April 2015 EXEC(3)