EXECL.3
上传用户:jnzhq888
上传日期:2007-01-18
资源大小:51694k
文件大小:5k
- ." Copyright (c) 1983 Regents of the University of California.
- ." All rights reserved. The Berkeley software License Agreement
- ." specifies the terms and conditions for redistribution.
- ."
- ." @(#)execl.3 6.2 (Berkeley) 4/25/86
- ."
- .TH EXECL 3 "April 25, 1986"
- .UC 5
- .SH NAME
- execl, execv, execle, execlp, execvp, exec, environ - execute a file
- .SH SYNOPSIS
- .ft B
- #include <unistd.h>
- .in +.5i
- .ti -.5i
- int execl(const char *fInamefP, const char *fIarg0fP, ..., (char *) NULL)
- .ti -.5i
- int execv(const char *fInamefP, char *const fIargvfP[])
- .ti -.5i
- int execle(const char *fInamefP, const char *fIarg0fP, ..., (char *) NULL, char *const fIenvpfP[])
- .ti -.5i
- int execlp(const char *fInamefP, const char *fIarg0fP, ..., (char *) NULL)
- .ti -.5i
- int execvp(const char *fInamefP, char *const fIargvfP[])
- .in -.5i
- extern char *const *environ;
- .fi
- .SH DESCRIPTION
- These routines provide various interfaces to the
- .B execve
- system call. Refer to
- .BR execve (2)
- for a description of their properties; only
- brief descriptions are provided here.
- .PP
- .B Exec
- in all its forms
- overlays the calling process with the named file, then
- transfers to the
- entry point of the core image of the file.
- There can be no return from a successful exec; the calling
- core image is lost.
- .PP
- The
- .I name
- argument
- is a pointer to the name of the file
- to be executed.
- The pointers
- .IR arg [ 0 ],
- .IR arg [ 1 "] ..."
- address null-terminated strings.
- Conventionally
- .IR arg [ 0 ]
- is the name of the
- file.
- .PP
- Two interfaces are available.
- .B execl
- is useful when a known file with known arguments is
- being called;
- the arguments to
- .B execl
- are the character strings
- constituting the file and the arguments;
- the first argument is conventionally
- the same as the file name (or its last component).
- A null pointer argument must end the argument list.
- (Note that the
- .B execl*
- functions are variable argument functions. This means that the type
- of the arguments beyond
- .I arg0
- is not checked. So the null pointer requires an explicit cast to type
- .B "(char *)"
- if not of that type already.)
- .PP
- The
- .B execv
- version is useful when the number of arguments is unknown
- in advance;
- the arguments to
- .B execv
- are the name of the file to be
- executed and a vector of strings containing
- the arguments.
- The last argument string must be followed
- by a null pointer.
- .PP
- When a C program is executed,
- it is called as follows:
- .PP
- .RS
- .ft B
- .nf
- int main(int fIargcfP, char *const fIargvfP[], char *const fIenvpfP[]);
- exit(main(fIargcfP, fIargvfP, fIenvpfP));
- .fi
- .ft R
- .RE
- .PP
- where
- .I argc
- is the argument count
- and
- .I argv
- is an array of character pointers
- to the arguments themselves.
- As indicated,
- .I argc
- is conventionally at least one
- and the first member of the array points to a
- string containing the name of the file.
- .PP
- .I Argv
- is directly usable in another
- .B execv
- because
- .IR argv [ argc ]
- is 0.
- .PP
- .I Envp
- is a pointer to an array of strings that constitute
- the
- .I environment
- of the process.
- Each string consists of a name, an *(lq=*(rq, and a null-terminated value.
- The array of pointers is terminated by a null pointer.
- The shell
- .BR sh (1)
- passes an environment entry for each global shell variable
- defined when the program is called.
- See
- .BR environ (7)
- for some conventionally
- used names.
- The C run-time start-off routine places a copy of
- .I envp
- in the global cell
- .BR environ ,
- which is used
- by
- .B execv
- and
- .B execl
- to pass the environment to any subprograms executed by the
- current program.
- .PP
- .B Execlp
- and
- .B execvp
- are called with the same arguments as
- .B execl
- and
- .BR execv ,
- but duplicate the shell's actions in searching for an executable
- file in a list of directories.
- The directory list is obtained from the environment variable
- .BR PATH .
- Under standard Minix, if a file is found that is executable, but does
- not have the proper executable header then it is assumed to be
- a shell script.
- .B Execlp
- and
- .B execvp
- execute
- .B /bin/sh
- to interpret the script.
- Under Minix-vmd this does not happen, a script must begin with
- .B #!
- and the full path name of the interpreter if it is to be an
- executable script.
- .SH "SEE ALSO"
- .BR execve (2),
- .BR fork (2),
- .BR environ (7),
- .BR sh (1).
- .SH DIAGNOSTICS
- If the file cannot be found,
- if it is not executable,
- if it does not start with a valid magic number (see
- .BR a.out (5)),
- if maximum memory is exceeded,
- or if the arguments require too much space,
- a return
- constitutes the diagnostic;
- the return value is -1 and
- .B errno
- is set as for
- .BR execve .
- Even for the super-user,
- at least one of the execute-permission bits must be set for
- a file to be executed.