EXECL(3) Library Routines EXECL(3)
execl, execlp, execv, execvp - execute a file
extern char **environ;
int execl(const char *path, const char *arg, ...);
int execle(const char *path, const char *rg, ...);
int execlp(const char *file, const char *arg, ...);
int execv(const char *path, char * const *argv);
int execvp(const char *file, char * const *argv);
The exec family of functions replaces the current process image with a
new process image. The functions described in this manual page are
front-ends for the function execve(2). (See the manual page for execve
for detailed information about the replacement of the current process.)
The initial argument for these functions is the pathname of a file
which is to be executed.
The arg and subsequent ellipses in the execl, execle, and execlp func-
tions can be thought of as arg0, arg1, ..., argn. Together they
describe a list of one or more pointers to NULL-terminated strings that
represent the argument list available to the executed program. The
first argument, by convention, should point to the file name associated
with the file being executed. The list of arguments must be terminated
by a NULL pointer.
The execle function expects a final argument, envp, of type 'char *
const *' to follow the trailing NULL pointer. This is an array of
environment strings, similar to that used by execve(2). This array
must be NULL-terminated.
The execv and execvp functions provide an array of pointers to NULL-
terminated strings that represent the argument list available to the
new program. The first argument, by convention, should point to the
file name associated with the file begin executed. The array of point-
ers must be terminated by a NULL pointer.
Some of these functions have special semantics.
The functions execlp and execvp will duplicate the actions of the shell
in searching for an executable file if the specified file name does not
contain a slash (/) character or a colon (:). The search path is the
path specified in the environment by PATH variable. If this variable
isn't specified, the default path /bin /usr/bin (or /usr/bin /bin for
gsh(1)) is used.
If any of the exec functions returns, an error will have occurred. The
return value is SYSERR (-1), and the global variable errno will be set
to indicate the error.
These routines may fail and set errno for any of the errors specified
for the library functions execve(2), _execve(2), and malloc(3).
When parsing the PATH environment variable, execvp and execlp assume
that if there is no colon (:) within PATH then the pathname delimiter
is a slash (/). This is to facilitate use of GS/OS pathname delim-
The current version of the gsh shell searches PATH from back to front.
In most other shells, it is done front to back. In order to provide
consistency with gsh, PATH is currently scanned back to front. With
this backwards scanning, the default PATH used is /usr/bin /bin. If
gsh gets fixed, the scan order will be quickly changed.
Implemented from the BSD specification by Devin Reade.
execve(2), fork(2), exec(3).
The GNO implementation of these routines first appeared in the lenviron
library. They became part of the GNO distribution as of v2.0.6
GNO 19 January 1997 EXECL(3)
Man(1) output converted with