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

BEZEICHNUNG

       execve - zum Ausführen von Programmen

SYNTAX

       #include <unistd.h>

       int  execve  (const  char  *dateiname,  const char * argv[], const char
       *envp[]);

BESCHREIBUNG

       execve() führt das Programm aus, auf das  dateiname  zeigt.   dateiname
       muss  entweder ein binäres ausführbares Programm oder ein Shell-Skript,
       welches mit einer Linie in der Form  "#!  Interpreter  [arg]"  beginnt,
       sein.

       execve()  kehrt  beim Erfolg nicht zurück und der Text, Daten, bss, und
       Stapel des aufrufenden  Prozesses  wird  durch  das  geladene  Programm
       überschrieben.   Das  aufgerufene Programm erbt die PID des aufrufenden
       Prozesses, sowie jeden  offenen  Dateideskriptor,  der  zur  Ausführung
       nicht  geschlossen  wurde.  Signale bezüglich des elterlichen Prozesses
       werden gelöscht.

       Falls das aktuelle  Programm  ptraced  wird,  wird  nach  erfolgreichem
       execve() ein SIGTRAP gesendet.

RÜCKGABEWERT

       Bei   Erfolg   kehrt   execve()  nicht  zurück,  bei  Fehlern  wird  -1
       zurückgegeben und errno wird dem entsprechend gesetzt.

FEHLER

       EACCES Die Datei ist keine gültige Datei.

       EACCES Die Erlaubnis zum ausführen der Datei wurde verweigert.

       EPERM  Das Dateisystem ist als noexec gemountet.

       EPERM  Das Dateisystem ist als nosuid gemountet und die Datei  hat  das
              SUID oder SGID bit gesetzt.

       E2BIG  Die Argumentenliste ist zu lang.

       ENOEXEC
              Die magische Zahl in der Datei ist falsch.

       EFAULT dateiname zeigt auf einen außerhalb liegenden Adressraum.

       ENAMETOOLONG
              dateiname ist zu lang.

       ENOENT Das File exestiert nicht.

       ENOMEM Unzulänglicher Kernelspeicher war verfügbar.

       ENOTDIR
              Eine Komponente des vorangestellten Pfades ist kein Direktory.

       EACCES die  Suchrechte  auf  eine Komponente des vorangestellten Pfades
              wurden verweigert.

       ELOOP  dateiname enthält eine  zirkulare  Referenz  (z.B,  durch  einen
              symbolischen Link)

KONFORM ZU

       SVID, AT&T, POSIX, X/OPEN, BSD 4.3

HINWEISE

       SUID  und  SGID  Prozesse  können  nicht  als SUID oder SGID ptrace()’d
       werden.

       Eine maximale Länge von 127 Zeichen ist für die erste  Zeile  eines  #!
       ausführbaren  Shell-Skripts  erlaubt.  Dies kann umgangen werden, indem
       man die maximale Größe des Puffers (buf) ändert, in diesem Fall ist man
       an  die  Puffergröße von 1024 Bytes gebunden, was keine triviale Lösung
       darstellt.

SIEHE AUCH

       execl(3), fork(2).