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

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.
       ┌───────────────────────────────┬───────────────────────┬─────────────┐
       │ SchnittstelleAttributWert        │
       ├───────────────────────────────┼───────────────────────┼─────────────┤
       │ 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)