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

BEZEICHNUNG

       execve - zum Ausfuhren 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()  fuhrt  das  Programm aus, auf das dateiname zeigt.  dateiname
       muss entweder ein binares ausfuhrbares Programm oder ein  Shell-Skript,
       welches  mit  einer  Linie  in der Form "#! Interpreter [arg]" beginnt,
       sein.

       execve() kehrt beim Erfolg nicht zuruck und der Text, Daten,  bss,  und
       Stapel  des  aufrufenden  Prozesses  wird  durch  das geladene Programm
       uberschrieben.  Das aufgerufene Programm erbt die PID  des  aufrufenden
       Prozesses,  sowie  jeden  offenen  Dateideskriptor,  der zur Ausfuhrung
       nicht geschlossen wurde.  Signale bezuglich des  elterlichen  Prozesses
       werden geloscht.

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

R"UCKGABEWERT

       Bei  Erfolg  kehrt  execve()  nicht  zuruck,  bei   Fehlern   wird   -1
       zuruckgegeben und errno wird dem entsprechend gesetzt.

FEHLER

       EACCES Die Datei ist keine gultige Datei.

       EACCES Die Erlaubnis zum ausfuhren 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 auBerhalb liegenden Adressraum.

       ENAMETOOLONG
              dateiname ist zu lang.

       ENOENT Das File exestiert nicht.

       ENOMEM Unzulanglicher Kernelspeicher war verfugbar.

       ENOTDIR
              Eine Komponente des vorangestellten Pfades ist kein Direktory.

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

       ELOOP  dateiname  enthalt  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 konnen  nicht  als  SUID  oder  SGID  ptrace()'d
       werden.

       Eine  maximale  Lange  von 127 Zeichen ist fur die erste Zeile eines #!
       ausfuhrbaren Shell-Skripts erlaubt.  Dies kann umgangen  werden,  indem
       man die maximale GroBe des Puffers (buf) andert, in diesem Fall ist man
       an die PuffergroBe von 1024 Bytes gebunden, was keine  triviale  Losung
       darstellt.

SIEHE AUCH

       execl(3), fork(2).