Provided by: manpages-de-dev_2.5-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  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.)

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.

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  4.15  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 Roland Krause <Rokrause@aol.com>, Martin Schulze
       <joey@infodrom.org>,   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>.

GNU                                            15. September 2017                                        EXEC(3)