exec

TriggerTek Logo
abcdefghijklmnopqrstuvwxyz_
EXEC(3)			  Linux Programmer’s Manual		      EXEC(3)



NAME
       execl, execlp, execle, execv, execvp - execute a file

SYNOPSIS
       #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[]);

DESCRIPTION
       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  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 file
       name associated with the file being executed.  The list	of  arguments
       must be terminated by a NULL pointer.

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

       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.  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 returned EAC-
       CES),  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.)

RETURN VALUE
       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.

FILES
       /bin/sh

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

SEE ALSO
       sh(1), execve(2), fork(2), environ(5), ptrace(2)

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

CONFORMING TO
       execl, execv, execle, execlp and execvp conform to  IEEE	 Std1003.1-88
       (‘‘POSIX.1’’).



BSD MANPAGE			  1993-11-29			      EXEC(3)