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