Provided by: manpages-nl_20051127-1_all bug

NAAM

       execve - voer een programma uit

OVERZICHT

       #include <unistd.h>

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

BESCHRIJVING

       execve()  voert  het  programma  uit  waar  bestandnaam   naar   wijst.
       bestandnaam  Moet  een  binair uitvoerbaar bestand zijn, of: een script
       dat start met een regel in de vorm: "#! interpreteerder [arg]"  In  het
       laatste geval moet de interpreteerder een geldige hele_bestandnaam zijn
       van een uitvoerbaar bestand dat niet zelf een script is, dat zal worden
       gestart als interpreteerder [arg] bestandnaam.

       argv  Is  een tabel van argument ‘string’-en {nl: karakter-snoeren} die
       aan het programma wordt gegeven. envp Is  een  tabel  van  ‘string’-en,
       volgens  conventie  in  de  vorm:  trefwoord=waarde, die aan het nieuwe
       programma wordt gegeven als omgeving. Beide  argv  en  envp  (tabellen)
       moeten  afsluiten  met  een  nul-pointer.  De  argument  pointer  en de
       omgeving  kunnen  bereikt  worden  door  de  "main"  functie  van   het
       aangeroepen  programma,  wanneer  die is bepaald als int main(int argc,
       char *argv[], char *envp[]).

       execve() keert bij slagen niet terug en de ‘text’,  ‘data’,  ‘bss’,  en
       ‘stapel’  {eng:  stack}, van het aanroepende proces worden overschreven
       door die van het programma dat geladen wordt.  Het  gestarte  programma
       neemt de PID en eventuele open bestandindicators die niet gezet zijn om
       bij  exec  te  sluiten,  over.   Signalen  die  nog  hangen  voor   het
       aanroepende  proces  worden  gewist.  Alle signalen die het aanroepende
       programma zou vangen worden naar hun standaard gedrag teruggezet.

       Als het  huidige  programma  ge-"ptrace"’t  {ptrace:  systeem  aanroep}
       wordt, wordt er een SIGTRAP naar gezonden na een geslaagde execve.

       Als het zet-uid-bit aan staat op het programma bestand waar bestandnaam
       naar wijst, dan wordt het geldige gebruikers  ID  van  het  aanroepende
       proces  veranderd  naar  dat van de eigenaar van dat programma bestand.
       Hetzelfde laken een pak wanneer het zet-gid-bit  aan  status  voor  het
       programma  bestand,  dan wordt het geldige groep ID van het aanroepende
       proces gezet naar de groep van het programma bestand.

       Als het uitvoerbare bestand van  de  vorm:  a.out  dynamisch-ge"link"’t
       uitvoerbaar   met   gedeelde-bibliotheek   verwijzingen,   {eng:  a.out
       dynamically- linked binary executable containing shared-library  stubs}
       is,  dan  wordt de dynamische linker ld.so(8) aangeroepen bij het begin
       van het  uitvoeren,  om  de  benodigde  gedeelde  bibliotheken  in  het
       werkgeheugen  te  brengen  en  om  het  uitvoerbare  bestand  ermee  te
       verbinden.

       Als het uitvoerbare bestand een  dynamisch  verbonden  ELF  uitvoerbaar
       bestand  is  dan  wordt  de  interpreteerder  die  genoemd wordt in het
       PT_INTERP segment gebruikt om  de  benodigde  gedeelde-bibliotheken  te
       laden.  Deze  interpreteerder  is  gewoonlijk  /lib/ld-linux.so.1  voor
       binaire bestanden die verbonden zijn met libc  versie  5,  en  /lib/ld-
       linux.so.2  voor  binaire  bestanden  die  verbonden  zijn met GNU libc
       versie 2.

EIND WAARDE

       Bij success keert execve niet terug, bij falen wordt  -1  teruggegeven,
       en wordt errno gezet zoals dat hoort.

FOUTEN

       EACCES {toegang}  Het  bestand  of  de  script  interpreteerder is geen
              normaal bestand.

       EACCES {toegang} Uitvoer toestemming werd geweigerd voor het bestand of
              een script interpreteerder.

       EACCES {toegang} Het bestandsysteem is gemount  met noexec.

       EPERM  {toestemming}  Het  bestandsysteem was gemount met nosuid, en de
              gebruiker is niet de supergebruiker, en het  bestand  heeft  het
              SUID of SGID bit aan staan.

       EPERM  {toestemming}   Het  proces  wordt  gevolgd  {eng:  traced},  de
              gebruiker is niet de supergebruiker en  het  bestand  heeft  een
              SUID of SGID bit aan staan.

       E2BIG  {te groot} De argumenten-lijst was te groot.

       ENOEXEC
              {niet  uitvoeren} Een uitvoerbaar bestand is niet in een bekende
              vorm: het is voor de verkeerde architectuur,  of  heeft  een  of
              andere vormfout waardoor het niet kan worden uitgevoerd.

       EFAULT {fout}  bestandnaam  wijst  buiten  door  u  toegankelijke adres
              ruimte.

       ENAMETOOLONG
              {naam te lang} bestandnaam is te lang.

       ENOENT {geen ingang} Het bestand bestandnaam of het script  of  de  ELF
              interpreteerder bestaat niet.

       ENOMEM {geen geheugen} Te weinig besturingssysteem geheugen voorhanden.

       ENOTDIR
              {geen dir} Een deel van het pad-voorvoegsel van  bestandnaam  of
              van een script of ELF interpreteerder is geen directorie.

       EACCES {toegang}  Zoek  toestemming  is geweigerd voor een deel van het
              pad-voorvoegsel van  bestandnaam  of  de  naam  van  een  script
              interpreteerder.

       ELOOP  {cirkel}  Teveel symbolische koppelingen werden tegengekomen bij
              het "oplossen" van bestandnaam of de naam van een script of  ELF
              interpreteerder.

       ETXTBUSY
              {text  bezig} Uitvoerbaar bestand is open voor schrijven bij een
              of meer processen.

       EIO    {in uit} Een In/Uit fout trad op.

       ENFILE {aantal bestanden} De grens aan het aantal  open  bestanden  van
              het systeem is bereikt.

       EMFILE {maximum   bestanden}  Het  proces  heeft  het  maximale  aantal
              bestanden open.

       EINVAL {ongeldig}  Een  ELF  uitvoerbaar  bestand  heeft  meer  dan   1
              PT_INTERP  segment  (probeerde  meer  dan  1  interpreteerder te
              benoemen).

       EISDIR {is dir} Een ELF interpreteerder was een directorie.

       ELIBBAD
              {bibliotheek fout} Een ELF  interpreteerder  had  een  onbekende
              vorm.

VOLDOET AAN

       SVr4, SVID, X/OPEN, BSD 4.3.  POSIX beschrijft het #! gedrag niet, maar
       is verder verenigbaar (eng: compatible) hiermee.   SVr4  beschrijft  de
       extra  fouttoestanden EAGAIN, EINTR, ELIBACC, ENOLINK, EMULTIHOP; POSIX
       beschrijft de ETXTBSY,  EPERM,  EFAULT,  ELOOP,  EIO,  ENFILE,  EMFILE,
       EINVAL, EISDIR en ELIBBAD fouttoestanden niet.

OPMERKINGEN

       SUID en SGID processen kunnen niet ge-ptrace()d worden SUID of SGID.

       Een  maximale regel lengte van 127 letters is toegestaan voor de eerste
       regel in een #! uitvoerbaar shell script.

       Linux negeert de SUID en SGID bits op scripts.

ZIE

       chmod(2) {verander toestand}, fork(2) {splits},  execl(3)  {uitvoeren},
       environ(5) {omgeving}, ld.so(8) {lader}

VERTALING

       Dit  is  een  handleiding  uit  manpages-dev  1.29.   Alles  wat tussen
       ‘{’..‘}’ staat is aanvullende vertaling, en hoort niet bij de originele
       handleiding.  Email naar <manpages-nl@nl.linux.org>.

       $Id: execve.2,v 1.1.1.1 2004/03/21 21:02:25 cor Exp $