EXEC(3)                    Linux Programmer's Manual                   EXEC(3)
       execl, execlp, execle, execv, execvp - execute a file

       #include <unistd.h>

       extern char **environ;

       int execl(const char *path, const char *arg, ...);
       int execlp(const char *file, const char *arg, ...);
       int execle(const char *path, const char *arg,
                  ..., char * const envp[]);
       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

       The  initial  argument  for  these  functions is the pathname of a file
       which is to be executed.

       The const char *arg and subsequent ellipses in the  execl(),  execlp(),
       and  execle()  functions  can  be  thought of as arg0, arg1, ..., argn.
       Together they describe a list of one or more  pointers  to  null-termi-
       nated  strings  that  represent the argument list available to the exe-
       cuted program.  The first argument, by convention, should point to  the
       filename  associated  with  the file being executed.  The list of argu-
       ments must be terminated by a NULL pointer, and, since these are  vari-
       adic functions, this pointer must be cast (char *) NULL.

       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 filename associated with the file being  executed.   The  array  of
       pointers must be terminated by a NULL pointer.

       The  execle()  function  also specifies the environment of the executed
       process by following the NULL pointer that terminates the list of argu-
       ments  in  the  parameter list or the pointer to the argv array with an
       additional parameter.  This additional parameter is an array of  point-
       ers  to  null-terminated  strings  and  must  be  terminated  by a NULL
       pointer.  The other functions take the environment for the new  process
       image from the external variable environ in the current process.

       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  filename
       does  not  contain  a slash (/) character.  The search path is the path
       specified in the environment by the PATH variable.   If  this  variable
       isn't specified, the default path '':/bin:/usr/bin'' is used.  In addi-
       tion, certain errors are treated specially.

       If permission is denied for a file  (the  attempted  execve()  returned
       EACCES), these functions will continue searching the rest of the search
       path.  If no other file is found, however, they will  return  with  the
       global variable errno set to EACCES.

       If  the  header  of  a  file  isn't  recognized (the attempted execve()
       returned ENOEXEC), these functions will execute the shell with the path
       of  the file as its first argument.  (If this attempt fails, no further
       searching is done.)

       If any of the exec() functions returns, an error  will  have  occurred.
       The  return  value  is -1, and the global variable errno will be set to
       indicate the error.


       All of these functions may fail and set errno for  any  of  the  errors
       specified for the library function execve(2).

       sh(1), execve(2), fork(2), ptrace(2), fexecve(3), environ(7)

       On  some other systems the default path (used when the environment does
       not contain the variable PATH) has the current working directory listed
       after  /bin  and  /usr/bin, as an anti-Trojan-horse measure. Linux uses
       here the traditional "current directory first" default path.

       The behavior of execlp() and execvp() when errors occur while  attempt-
       ing to execute the file is historic practice, but has not traditionally
       been documented and is not specified by the POSIX  standard.  BSD  (and
       possibly  other  systems) do an automatic sleep and retry if ETXTBSY is
       encountered. Linux treats it as a hard error and returns immediately.

       Traditionally, the functions execlp() and execvp() ignored  all  errors
       except  for  the  ones described above and ENOMEM and E2BIG, upon which
       they returned.  They now return  if  any  error  other  than  the  ones
       described above occurs.


BSD MANPAGE                       1993-11-29                           EXEC(3)