EXECL(3C) COMMAND REFERENCE EXECL(3C)
NAME
execl, execv, execle, execlp, execvp, exec, exece, exect,
environ - execute a file
SYNOPSIS
execl(filename, arg0, arg1, ..., argn, 0)
char *filename, *arg0, *arg1, ..., *argn;
execlp(filename, arg0, arg1, ..., argn, 0)
char *filename, *arg0, *arg1, ..., *argn;
execv(filename, argv)
char *filename, *argv[ ];
execvp(filename, argv)
char *filename, *argv[ ];
execle(filename, arg0, arg1, ..., argn, 0, envp)
char *filename, *arg0, *arg1, ..., *argn, *envp[ ];
exect(filename, argv, envp)
char *filename, *argv[ ], *envp[ ];
extern char **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 filename 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 filename (or its last component). A 0 argument must
end the argument list. Execle is like execl but uses the
addition argument envp; see below.
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
Printed 5/12/88 1
EXECL(3C) COMMAND REFERENCE EXECL(3C)
a ``0'' pointer.
The exect version is used when the executed file is to be
manipulated with ptrace(2). The program is forced to single
step a single instruction giving the parent an opportunity
to manipulate its state. See ptrace(2).
When a C program is executed, it is called as follows:
main(argc, argv, envp)
int argc;
char **argv, **envp;
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 equal sign (=), and a null-terminated value. The array
of pointers is terminated by a null pointer. The shell
sh(1sh) 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.
Even for the superuser, at least one of the execute-
permission bits must be set for a file to be executed.
FILES
/bin/sh Shell, invoked if command file found by
execlp or execvp.
DIAGNOSTICS
See execve(2).
RETURN VALUE
If exec returns to the calling process, an error has
occurred. The return value will be -1.
Printed 5/12/88 2
EXECL(3C) COMMAND REFERENCE EXECL(3C)
CAVEATS
If execvp is called to execute a file that turns out to be a
shell command file, and if it is impossible to execute the
shell, the values of argv[0] and argv[-1] will be modified
before return.
SEE ALSO
csh(1csh), sh(1sh), execve(2), fork(2), ptrace(2), a.out(5),
and environ(7).
Printed 5/12/88 3
%%index%%
na:288,139;
sy:427,4525;
de:4952,2000;7312,2451;
fi:9763,285;
di:10048,157;
rv:10205,266;
ca:10831,373;
se:11204,297;
%%index%%000000000151