Provided by: manpages-dev_2.77-1_all bug


       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(2) 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-
       terminated  strings  that  represent the argument list available to the
       executed program.  The first argument, by convention, should  point  to
       the  filename  associated  with  the  file being executed.  The list of
       arguments must be terminated by a NULL pointer, and,  since  these  are
       variadic 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
       arguments  in  the parameter list or the pointer to the argv array with
       an additional parameter.  This additional  parameter  is  an  array  of
       pointers  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.

   Special semantics for execlp() and execvp()
       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
       addition, certain errors are treated specially.

       If permission is denied for a file (the  attempted  execve(2)  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(2)
       returned ENOEXEC), these functions will  execute  the  shell  (/bin/sh)
       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).




       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
       attempting  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.


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


       This page is part of release 2.77 of the Linux  man-pages  project.   A
       description  of  the project, and information about reporting bugs, can
       be found at