Provided by: manpages-de-dev_4.27.0-1_all bug

BEZEICHNUNG

       execl, execlp, execle, execv, execvp, execvpe - führt eine Datei aus

BIBLIOTHEK

       Standard-C-Bibliothek (libc, -lc)

ÜBERSICHT

       #include <unistd.h>

       extern char **environ;

       int execl(const char *pfadname, const char *arg, 
       /*, (char *) NULL */);
       int execlp(const char *datei, const char *arg, 
       /*, (char *) NULL */);
       int execle(const char *pfadname, const char *arg, 
                       /*, (char *) NULL, char *const umgez[] */);
       int execv(const char *pfadname, char *const argv[]);
       int execvp(const char *datei, char *const argv[]);
       int execvpe(const char *datei, char *const argv[], char *const umgez[]);

   Mit Glibc erforderliche Feature-Test-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 über diejenigen der Systemfunktion
       execve(2) gelegt. (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 mit einem Nullbyte  (»\0«)  abgeschlossene  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  Nullzeiger
       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 mit einem
       Nullbyte abgeschlossene 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
       Nullzeiger als letztem Eintrag abgeschlossen werden.

   e - execle(), execvpe()
       Die Umgebung für das neue Prozessabbild wird mittels des Arguments umgez festgelegt. Das  Argument  umgez
       ist  ein  Feld  von  Zeigern  auf  mit  einem  Nullbyte  abgeschlossene  Zeichenketten und muss mit einem
       Nullzeiger 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 VERSIONEN für weitere Details.

       execvpe() sucht nach dem Programm mittels des Werts von PATH aus der Umgebung des Aufrufenden, nicht  aus
       dem Argument umgez.

       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.

ATTRIBUTE

       Siehe attributes(7) für eine Erläuterung der in diesem Abschnitt verwandten Ausdrücke.
       ┌───────────────────────────────────────────────────────────────┬───────────────────────┬───────────────┐
       │ SchnittstelleAttributWert          │
       ├───────────────────────────────────────────────────────────────┼───────────────────────┼───────────────┤
       │ execl(), execle(), execv()                                    │ Multithread-Fähigkeit │ MT-Sicher     │
       ├───────────────────────────────────────────────────────────────┼───────────────────────┼───────────────┤
       │ execlp(), execvp(), execvpe()                                 │ Multithread-Fähigkeit │ MT-Sicher env │
       └───────────────────────────────────────────────────────────────┴───────────────────────┴───────────────┘

VERSIONEN

       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.

STANDARDS

       environ
       execl()
       execlp()
       execle()
       execv()
       execvp()
              POSIX.1-2008.

       execvpe()
              GNU.

GESCHICHTE

       environ
       execl()
       execlp()
       execle()
       execv()
       execvp()
              POSIX.1-2001.

       execvpe()
              Glibc 2.11.

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)

Ü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 die
       Mailingliste der Übersetzer: debian-l10n-german@lists.debian.org.

Linux man-pages 6.9.1                             16. Juni 2024                                          exec(3)