Provided by: manpages-nl_20051127-4_all
 

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.  bestand‐
        naam 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 pro‐
        gramma wordt gegeven als omgeving. Beide argv en envp (tabellen) moeten
        afsluiten  met een nul-pointer. De argument pointer en de omgeving kun‐
        nen bereikt worden door de "main"  functie  van  het  aangeroepen  pro‐
        gramma,  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  aan‐
        roepende  proces worden gewist.  Alle signalen die het aanroepende pro‐
        gramma 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 dynami‐
        cally- 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  werkge‐
        heugen 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  ver‐
        sie 2.
        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  nor‐
               maal 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 inter‐
               preteerder.
 
        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.
        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, EIN‐
        VAL, 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 $