Yolinux.com

execv manpage

Search topic Section


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(2) 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-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.

   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 addi-
       tion, 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.)

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.

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

CONFORMING TO
       POSIX.1-2001.

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

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

COLOPHON
       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 http://www.kernel.org/doc/man-pages/.



GNU				  1993-11-29			       EXEC(3)
Hypertext Manpage Browser (execv)
YoLinux.com Home Page
YoLinux Tutorial Index
Privacy Policy | Advertise with us | Feedback Form |
Unauthorized copying or redistribution prohibited.
    Bookmark and Share