Provided by: manpages-de-dev_0.10-1_all bug

BEZEICHNUNG

       execve - zum Ausführen von Programmen

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

              man -LC 2 execve

       eingeben.

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