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