Provided by: manpages-de-dev_2.16-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 *pathname, const char *arg, ...
       /* (char  *) NULL */);
       int execlp(const char *file, const char *arg, ...
       /* (char  *) NULL */);
       int execle(const char *pathname, const char *arg, ...
                       /*, (char *) NULL, char * const envp[] */);
       int execv(const char *pathname, 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.

       Die Funktionen können, basierend auf den Buchstaben, die dem Namensanfang  »exec«  folgen,
       gruppiert werden.

   l - execl(), execlp(), execle()
       Der  Ausdruck  const char *arg und die nachfolgenden Auslassungspunkte (»…«) 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.

       Im   Gegensatz   zu   den   »l«-Funktionen   legen   die   »v«-Funktionen   (unten)    die
       Befehlszeilenargumente des ausgeführten Programmes als Vektor fest.

   v - execv(), execvp(), execvpe()
       Die  Argument char *const argv[] ist ein im Folgeprogramm verfügbares Feld von Zeigern auf
       nullterminierte Zeichenketten, die die  Argumentenliste  darstellen.  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.

   e - execle(), execvpe()
       Die  die  Umgebung  für  das  auszuführende  Programm  wird  mittels  des  Arguments  envp
       festgelegt.  Das  Argument envp ist ein Feld von Zeigern auf nullterminierte Zeichenketten
       und muss mit einem Null-Zeiger als letztem Eintrag abgeschlossen werden.

       Alle anderen exec()-Funktionen (die kein »e«  in  der  Endung  enthalten)  übernehmen  die
       Umgebungsvariablen für den neuen Prozess von der externen Variablen environ im aufrufenden
       Prozess.

   p - execlp(), execvp(), execvpe()
       Diese Funktionen 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 eine
       Liste,  die  die  von  confstr(_CS_PATH)  (das  typischerweise  den  Wert  »/bin:/usr/bin«
       zurückliefert) zurückgelieferten Verzeichnisse enthält und mglicherweise auch das aktuelle
       Arbeitsverzeichnis. Lesen Sie ANMERKUNGEN für weitere Details.

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

       Alle  anderen exec()-Funktionen (die kein »p« in der Endung enthalten) akzeptieren als ihr
       erstes Argument einen (relativen oder absoluten) Pfadnamen, der das auszuführende Programm
       identifiziert.

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

       Der Standardsuchpfad (wird verwandt, wenn die Umgebung nicht die Variable  PATH  enthält),
       zeigt  zwischen  Systemen  einige Variationen. Im Allgemeinen enthält es /bin und /usr/bin
       (in dieser Reihenfolge) und kann  auch  das  aktuelle  Arbeitsverzeichnis  enthalten.  Auf
       einigen  Systemen ist das aktuelle Arbeitsverzeichnis nach /bin und /usr/bin enthalten, um
       Trojanische Pferde zu vermeiden. Die Glibc-Implementierung folgte lange der traditionellen
       Vorgabe,  bei  der das aktuelle Arbeitsverzeichnis am Anfang des Suchpfades enthalten ist.
       Aufgrund einiger Code-Überarbeitungen während der Entwicklung der  Glibc  2.24  wurde  das
       aktuelle   Arbeitsverzeichnis   aus   dem   Standard-Suchpfad   komplett  entfernt.  Diese
       versehentliche  Verhaltensänderung  wird  leicht  nützlich  eingeschätzt  und  wird  nicht
       zurückgenommen.

       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.

FEHLER

       Vor Glibc 2.24 verwandten execl() und execle() intern realloc(3)  und  waren  daher  nicht
       asynchron-signal-sicher. Dies verletzte die Anforderungen von POSIX.1. Dies wurde in Glibc
       2.24 korrigiert.

   Architekturspezifische Details
       Unter Sparc und Sparc64 wird execv() zur Kompatibilität mit SunOS durch den Kernel als ein
       Systemaufruf (mit dem oben gezeigten Prototypen) bereitgestellt. Diese Funktion wird durch
       den execv()-Wrapper auf diesen Architekturen nicht eingesetzt.

SIEHE AUCH

       sh(1), execve(2), execveat(2), fork(2), ptrace(2), fexecve(3), system(3), environ(7)

KOLOPHON

       Diese Seite  ist  Teil  der  Veröffentlichung  5.03  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 https://www.kernel.org/doc/man-pages/.

ÜBERSETZUNG

       Die   deutsche   Übersetzung   dieser   Handbuchseite    wurde    von    Martin    Schulze
       <joey@infodrom.org>,   Roland   Krause   <Rokrause@aol.com>,   Martin   Eberhard   Schauer
       <Martin.E.Schauer@gmx.de> und Helge Kreutzmann <debian@helgefjell.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>.