.\" Hey Emacs! This file is -*- nroff -*- source. .\" .\" Copyright (c) 1992 Drew Eckhardt (drew@cs.colorado.edu), March 28, 1992 .\" .\" Permission is granted to make and distribute verbatim copies of this .\" manual provided the copyright notice and this permission notice are .\" preserved on all copies. .\" .\" Permission is granted to copy and distribute modified versions of this .\" manual under the conditions for verbatim copying, provided that the .\" entire resulting derived work is distributed under the terms of a .\" permission notice identical to this one .\" .\" Since the Linux kernel and libraries are constantly changing, this .\" manual page may be incorrect or out-of-date. The author(s) assume no .\" responsibility for errors or omissions, or for damages resulting from .\" the use of the information contained herein. The author(s) may not .\" have taken the same level of care in the production of this manual, .\" which is licensed free of charge, as they might when working .\" professionally. .\" .\" Formatted or processed versions of this manual, if unaccompanied by .\" the source, must acknowledge the copyright and authors of this work. .\" .\" Modified by Michael Haardt .\" Modified Wed Jul 21 22:47:01 1993 by Rik Faith .\" Modified 21 Aug 1994 by Michael Chastain : .\" Fixed typoes. .\" Modified Fri Jan 31 16:24:28 1997 by Eric S. Raymond .\" Modified Fri Nov 12 22:57:27 1999 by Urs Thuermann .\" .TH EXECVE 2 "3 September 1997" "Linux 2.0.30" "Linux Programmeurs Handleiding" .SH NAAM execve \- voer een programma uit .SH OVERZICHT .B #include .sp .BI "int execve (const char *" bestandnaam ", char *const " argv .BI "[], char *const " envp []); .SH BESCHRIJVING \fBexecve()\fP voert het programma uit waar \fIbestandnaam\fP naar wijst. \fIbestandnaam\fP Moet een binair uitvoerbaar bestand zijn, of: een script dat start met een regel in de vorm: "\fB#! \fIinterpreteerder \fR[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 \fBinterpreteerder\fR [arg] \fIbestandnaam\fR. \fIargv\fP Is een tabel van argument `string'-en {nl: karakter-snoeren} die aan het programma wordt gegeven. \fIenvp\fP Is een tabel van `string'-en, volgens conventie in de vorm: \fBtrefwoord=waarde\fR, die aan het nieuwe programma wordt gegeven als omgeving. Beide \fIargv\fP en \fIenvp\fP (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 \fBint main(int argc, char *argv[], char *envp[])\fR. \fBexecve()\fP 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 \fBSIGTRAP\fP naar gezonden na een geslaagde \fBexecve\fP. Als het zet-uid-bit aan staat op het programma bestand waar \fIbestandnaam\fP 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 .BR 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 \fL/lib/ld-linux.so.1\fR voor binaire bestanden die verbonden zijn met libc versie 5, en \fI/lib/ld-linux.so.2\fR voor binaire bestanden die verbonden zijn met GNU libc versie 2. .SH "EIND WAARDE" Bij success keert \fBexecve\fP niet terug, bij falen wordt \-1 teruggegeven, en wordt .I errno gezet zoals dat hoort. .SH FOUTEN .TP .B EACCES {toegang} Het bestand of de script interpreteerder is geen normaal bestand. .TP .B EACCES {toegang} Uitvoer toestemming werd geweigerd voor het bestand of een script interpreteerder. .TP .B EACCES {toegang} Het bestandsysteem is gemount met .IR noexec . .TP .B EPERM {toestemming} Het bestandsysteem was gemount met .IR nosuid , en de gebruiker is niet de supergebruiker, en het bestand heeft het SUID of SGID bit aan staan. .TP .B 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. .TP .B E2BIG {te groot} De argumenten-lijst was te groot. .TP .B 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. .TP .B EFAULT {fout} .I bestandnaam wijst buiten door u toegankelijke adres ruimte. .TP .B ENAMETOOLONG {naam te lang} .I bestandnaam is te lang. .TP .B ENOENT {geen ingang} Het bestand .I bestandnaam of het script of de ELF interpreteerder bestaat niet. .TP .B ENOMEM {geen geheugen} Te weinig besturingssysteem geheugen voorhanden. .TP .B ENOTDIR {geen dir} Een deel van het pad-voorvoegsel van .I bestandnaam of van een script of ELF interpreteerder is geen directorie. .TP .B EACCES {toegang} Zoek toestemming is geweigerd voor een deel van het pad-voorvoegsel van .I bestandnaam of de naam van een script interpreteerder. .TP .B ELOOP {cirkel} Teveel symbolische koppelingen werden tegengekomen bij het "oplossen" van .I bestandnaam of de naam van een script of ELF interpreteerder. .TP .B ETXTBUSY {text bezig} Uitvoerbaar bestand is open voor schrijven bij een of meer processen. .TP .B EIO {in uit} Een In/Uit fout trad op. .TP .B ENFILE {aantal bestanden} De grens aan het aantal open bestanden van het systeem is bereikt. .TP .B EMFILE {maximum bestanden} Het proces heeft het maximale aantal bestanden open. .TP .B EINVAL {ongeldig} Een ELF uitvoerbaar bestand heeft meer dan 1 PT_INTERP segment (probeerde meer dan 1 interpreteerder te benoemen). .TP .B EISDIR {is dir} Een ELF interpreteerder was een directorie. .TP .B ELIBBAD {bibliotheek fout} Een ELF interpreteerder had een onbekende vorm. .SH "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. .SH OPMERKINGEN SUID en SGID processen kunnen niet ge-\fBptrace()\fPd 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. .SH "ZIE" .BR chmod "(2) {verander toestand}," .BR fork "(2) {splits}," .BR execl "(3) {uitvoeren}," .BR environ "(5) {omgeving}," .BR ld.so "(8) {lader}" .\" Translated Tue Nov 7 16:44:16 2000 by Jos Boersema .\" .SH VERTALING Dit is een handleiding uit \fBmanpages-dev 1.29\fR. Alles wat tussen `\fB{\fR'..`\fB}\fR' staat is \fBaanvullende vertaling\fR, en hoort \fBniet\fR bij de originele handleiding. .\" .\"Vertaling Jos Boersema .\" Email naar . $Id: execve.2,v 1.1 2003/04/28 18:43:34 bokkie Exp $