Provided by: manpages-de-dev_0.5-5ubuntu1_all bug

BEZEICHNUNG

       execl, execlp, execle, execv, execvp - Datei ausfhren

BERSICHT

       #include <unistd.h>

       extern char **environ;

       int execl( const char *path, const char *arg, ...);
       int execlp( const char *file, const char *arg, ...);
       int execle( const char *path, const char *arg,
                   ..., NULL, char * const envp[]);
       int execv( const char *path, char *const argv[]);
       int execvp( const char *file, char *const argv[]);

       Diese  Handbuchseite ist eventuell veraltet. Im Zweifelsfall ziehen Sie
       die englischsprachige Handbuchseite zu Rate, indem Sie

              man -LC 3 exec

       eingeben.

BESCHREIBUNG

       Die exec-Bibliotheksfunktionen ersetzen den aktuellen  Programmcode  im
       Speicher  mit  neuem  Programmcode.  Dieser Programmcode wird aus einer
       Datei geladen.  Die hier  beschriebenen  Bibliotheksfunktionen  stellen
       eine Schnittstelle zu der Systemfunktion execve(2) dar.

       Das  erste Argument dieser Funktionen ist immer der Pfadname der Datei,
       die ausgefhrt werden soll.

       Der Ausdruck const char *arg und die nachfolgenden Ellipsen ('...' wird
       auch  Ellipse genannt) der Funktionen execl, execlp, und execle ist als
       eine Liste mit einer unbestimmten Anzahl  von  Parametern  arg0,  arg1,
       ..., argn zu verstehen.  Zusammen stellen sie eine Liste mit einem oder
       mehreren nullterminierten (mit '\0' abgeschlossenen) Zeichenketten dar,
       die  der  Funktion  main  des aufgerufenen Programms in argv[] bergeben
       wird.  Der erste Eintrag arg0 sollte ein Zeiger auf den Dateinamen  des
       aufgerufenen  Programms  sein.  Dieser Dateiname wird normalerweise von
       jedem  Programm  in   argv[0]   erwartet.    Die   Parameterliste   der
       execl-Funktionen muss mit einem NULL-Zeiger abgeschlossen werden.

       Die  Funktionen  execv  und  execvp bergeben die Aufrufparameter an das
       Folgeprogramm  in  einem  Vektor  von   Zeigern   auf   nullterminierte
       Zeichenketten.  Die Struktur dieses Vektors entspricht exakt dem Aufbau
       von argv[] der Funktion main eines Programms.  Daher sollte  der  erste
       Eintrag   in   diesem  Vektor  einen  Zeiger  auf  den  Dateinamen  des
       aufgerufenen Programms enthalten.   Der  Zeigervektor  muss  mit  einen
       NULL-Zeiger als letzten Eintrag abgeschlossen werden.

       Die  Funktion  execle  bergibt  zustzlich die Umgebungsvariablen (siehe
       env(1)) in einem Zeigervektor an das Folgeprogramm.  Dieser Vektor muss
       ebenfalls  mit  einem  NULL-Zeiger  als  letzten  Eintrag abgeschlossen
       werden.    Alle   Zeichenketten   mssen   nullterminiert   sein.    Die
       Parameterliste  arg0  bis  argn  wird  zunchst  mit einem NULL - Zeiger
       abgeschlossen.  Hinter  dem  NULL-Zeiger  wird  dann  der  Zeigervektor
       envp[] wie oben beschrieben angegeben.  Die brigen Funktionen bernehmen
       die Umgebungsvariablen fr den neuen Prozess von der externen  Variablen
       environ.

       Ein Teil der Funktionen hat eine spezielle Semantik.

       Die  Funktionen  execlp und execvp verwenden den Suchpfad fr ausfhrbare
       Dateien vom Elternprozess, wenn der angegebene  Programmname  nicht  in
       Form  eines  relativen  oder  absoluten Pfadnamens angegeben wird.  Der
       Suchpfad wird durch die Umgebungsvariable  PATH  definiert.   Ist  PATH
       nicht definiert, wird der Standardpfad ``/bin:/usr/bin:.'' verwendet.

       Wenn  die  Ausfhrung  einer  gefundenen  Datei  nicht  mglich  war (der
       execve-Aufruf lieferte  EACCES  in  errno),  wird  die  Suche  mit  den
       verbliebenen Pfadangaben des Suchpfades fortgesetzt.  Wenn keine andere
       Datei gefunden wird, kehren diese Funktionen mit dem Rckgabewert -1  in
       das aufrufende Programm zurck.  Die globale Fehlervariable errno ist in
       diesem Fall auf EACCES gesetzt.

       Wenn der Dateiheader einer gefundenen Datei nicht das  korrekte  Format
       hat  (der  execve-Aufruf  lieferte  ENOEXEC  in  errno),  starten diese
       Funktionen eine  Shell  mit  dem  Pfadnamen  dieser  Datei  als  erstes
       Argument.   Wenn dieser Versuch fehlschlgt, wird die Suche abgebrochen.

       Wenn der Zugriff auf die gefundene Datei gerade nicht mglich  ist  (der
       execve-Aufruf  lieferte  ETXTBUSY  in  errno),  warten diese Funktionen
       mehrere  Sekunden  und  versuchen  periodisch   die   gefundene   Datei
       auszufhren.  Dieses Problem kann beim Dateizugriff ber ein Netzwerk wie
       z.B. mit NFS auftreten.

RCKGABEWERT

       Wenn eine der exec-Funktionen in das  aufrufende  Programm  zurckkehrt,
       ist  ein  Fehler  aufgetreten.   Das  Funktionsergebnis  ist -1 und die
       globale  Variable  errno  wird  auf  die  entsprechende   Fehlerkennung
       gesetzt.

DATEIEN

       /bin/sh

FEHLER

       Der  Aufruf  der  Funktionen  execl,  execle,  execlp  und  execvp kann
       fehlschlagen.  In diesem Fall wird errno auf einen der mglichen  Fehler
       der Funktionen execve(2) oder malloc(3) gesetzt.

       Execv  setzt  in  diesem  Fall  errno auf einen der mglichen Fehler der
       Funktion execve(2).

KOMPATIBILITT

       In frheren Versionen von execlp und  execvp  wurde  ``.:/bin:/usr/bin''
       als  Standard-Suchpfad  verwendet.   Um die Systemsicherheit zu erhhen,
       wurde das aktuelle Verzeichnis ``.'' zum Ende  des  Suchpfads  verlegt.
       Linux verwendet hier den traditionellen "lokaler Pfad zuerst"-Pfad.

       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.
       Generell  sollte  der  Wert  von  errno   nach   einem   Fehler   einer
       exec-Funktion  nur  fr  die  Ausgabe  von  Fehlermeldungen  genutzt und
       keinesfalls der Programmfluss von diesem Wert abhngig  gemacht  werden.
       Es  ist  auf  jedem  UNIX-Derivat  mit unterschiedlichen Ergebnissen zu
       rechnen.

       Traditionell ignorieren die Funktionen execlp und  execvp  alle  Fehler
       bis auf die oben beschriebenen sowie ENOMEM und E2BIG, in welchen Fllen
       sie ins Hauptprogramm zurckkehren.  Sie kehren jetzt ins  Hauptprogramm
       bei jedem Fehler anders als den oben beschriebenen zurck.

KONFORM ZU

       Execl,   execv,   execle,  execlp  and  execvp  sind  konform  zu  IEEE
       Std1003.1-88 (POSIX).

SIEHE AUCH

       sh(1), execve(2), fork(2), environ(7).