add directory Minix
This commit is contained in:
118
Minix/CD-ROM-2.0/MINIX/MANUALS/CAT3/EXECL.3
Normal file
118
Minix/CD-ROM-2.0/MINIX/MANUALS/CAT3/EXECL.3
Normal file
@@ -0,0 +1,118 @@
|
||||
|
||||
|
||||
EXECL(3) Minix Programmer's Manual EXECL(3)
|
||||
|
||||
|
||||
NAME
|
||||
execl, execv, execle, execlp, execvp, exec, environ - execute a file
|
||||
|
||||
SYNOPSIS
|
||||
#include <unistd.h>
|
||||
|
||||
int execl(const char *name, const char *arg0, ..., (char *) NULL)
|
||||
int execv(const char *name, char *const argv[])
|
||||
int execle(const char *name, const char *arg0, ..., (char *) NULL, char
|
||||
*const envp[])
|
||||
int execlp(const char *name, const char *arg0, ..., (char *) NULL)
|
||||
int execvp(const char *name, char *const argv[])
|
||||
|
||||
extern char *const *environ;
|
||||
|
||||
DESCRIPTION
|
||||
These routines provide various interfaces to the execve system call.
|
||||
Refer to execve(2) for a description of their properties; only brief
|
||||
descriptions are provided here.
|
||||
|
||||
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.
|
||||
|
||||
The name argument is a pointer to the name of the file to be executed.
|
||||
The pointers arg[0], arg[1] ... address null-terminated strings.
|
||||
Conventionally arg[0] is the name of the file.
|
||||
|
||||
Two interfaces are available. execl is useful when a known file with
|
||||
known arguments is being called; the arguments to 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 execl*
|
||||
functions are variable argument functions. This means that the type of
|
||||
the arguments beyond arg0 is not checked. So the null pointer requires
|
||||
an explicit cast to type (char *) if not of that type already.)
|
||||
|
||||
The execv version is useful when the number of arguments is unknown in
|
||||
advance; the arguments to 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.
|
||||
|
||||
When a C program is executed, it is called as follows:
|
||||
|
||||
int main(int argc, char *const argv[], char *const envp[]);
|
||||
|
||||
exit(main(argc, argv, envp));
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
5BSD April 25, 1986 1
|
||||
|
||||
|
||||
|
||||
EXECL(3) Minix Programmer's Manual EXECL(3)
|
||||
|
||||
|
||||
where argc is the argument count and argv is an array of character
|
||||
pointers to the arguments themselves. As indicated, argc is
|
||||
conventionally at least one and the first member of the array points to a
|
||||
string containing the name of the file.
|
||||
|
||||
Argv is directly usable in another execv because argv[argc] is 0.
|
||||
|
||||
Envp is a pointer to an array of strings that constitute the environment
|
||||
of the process. Each string consists of a name, an "=", and a null-
|
||||
terminated value. The array of pointers is terminated by a null pointer.
|
||||
The shell sh(1) passes an environment entry for each global shell
|
||||
variable defined when the program is called. See environ(7) for some
|
||||
conventionally used names. The C run-time start-off routine places a
|
||||
copy of envp in the global cell environ, which is used by execv and execl
|
||||
to pass the environment to any subprograms executed by the current
|
||||
program.
|
||||
|
||||
Execlp and execvp are called with the same arguments as execl and 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 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. Execlp and execvp execute /bin/sh to
|
||||
interpret the script. Under Minix-vmd this does not happen, a script
|
||||
must begin with #! and the full path name of the interpreter if it is to
|
||||
be an executable script.
|
||||
|
||||
SEE ALSO
|
||||
execve(2), fork(2), environ(7), sh(1).
|
||||
|
||||
DIAGNOSTICS
|
||||
If the file cannot be found, if it is not executable, if it does not
|
||||
start with a valid magic number (see 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 errno is set as
|
||||
for execve. Even for the super-user, at least one of the execute-
|
||||
permission bits must be set for a file to be executed.
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
5BSD April 25, 1986 2
|
||||
|
||||
Reference in New Issue
Block a user