execl, execv, execle, execve, execlp, execvp, exec, exece, environ \- execute a file
.B execl(name, arg0, arg1, ..., argn, 0)
.B char *name, *arg0, *arg1, ..., *argn;
.B execle(name, arg0, arg1, ..., argn, 0, envp)
.B char *name, *arg0, *arg1, ..., *argn, *envp[ ];
.B execve(name, argv, envp);
.B char *name, *argv[ ], *envp[ ];
.B extern char **environ;
overlays the calling process with the named file, then
entry point of the core image of the file.
There can be no return from a succussful exec; the calling
unless explicit arrangement has been made;
Ignored signals remain ignored across
signals that are caught (see
user ID and group ID and an
identifies the person using the system;
determines his access privileges.
changes the effective user and group ID to
the owner of the executed file if the file has the `set-user-ID'
is a pointer to the name of the file
address null-terminated strings.
From C, two interfaces are available.
is useful when a known file with known arguments is
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 0 argument must end the argument list.
version is useful when the number of arguments is unknown
are the name of the file to be
executed and a vector of strings containing
The last argument string must be followed
When a C program is executed,
is an array of character pointers
to the arguments themselves.
is conventionally at least one
and the first member of the array points to a
string containing the name of the file.
is directly usable in another
is a pointer to an array of strings that constitute
Each string consists of a name, an ``='', and a null-terminated value.
The array of pointers is terminated by a null pointer.
passes an environment entry for each global shell variable
defined when the program is called.
The C run-time start-off routine places a copy of
to pass the environment to any subprograms executed by the
routines use lower-level routines as follows
to pass an environment explicitly:
execve(file, argv, environ);
execle(file, arg0, arg1, . . . , argn, 0, environ);
are called with the same arguments as
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.
/bin/sh shell, invoked if command file found
If the file cannot be found,
if it does not start with a valid magic number (see
if maximum memory is exceeded,
or if the arguments require too much space,
constitutes the diagnostic;
at least one of the execute-permission bits must be set for
is called to execute a file that turns out to be a shell
and if it is impossible to execute the shell,
will be modified before return.
.B sys exece; name; argv; envp
but remains for historical reasons.
When the called file starts execution on the PDP11,
the stack pointer points to a word containing the number of arguments.
this number is a list of pointers to the argument strings,
followed by a null pointer, followed by the pointers to
the environment strings and then another null pointer.
The strings themselves follow;
a 0 word is left at the very top of memory.
the stack begins at a conventional place
the layout of data on the stack is as follows.
This arrangement happens to conform well to C calling conventions.
On a VAX-11, the stack begins at 0x80000000 and grows towards lower-
numbered addresses. After
the layout of data on the stack is as follows.