execve man page on OPENSTEP

Man page or keyword search:  
man Server   1419 pages
apropos Keyword Search (all sections)
Output format
OPENSTEP logo
[printable version]


EXECVE(2)							     EXECVE(2)

NAME
       execve, execv - execute a file

SYNOPSIS
       int execve(const char*path, char *const argv[], char *const envp);

       int execv(const char*path, char *const argv[]);

       extern char **environ;

DESCRIPTION
       The execve and execv functions transform the calling process into a new
       process.	 The new process is constructed from an ordinary  file	called
       the   new process file.	This file is either an executable object file,
       or a file of data  for  an  interpreter.	  An  executable  object  file
       consists	  of   an  identifying	header,	 followed  by  pages  of  data
       representing the initial program (text)	and  initialized  data	pages.
       Additional  pages may be specified by the header to be initialized with
       zero data.  See a.out(5).

       An interpreter file begins with a line of the form ``#!	interpreter''.
       When  an	 interpreter  file  is	exec'd,	 the system runs the specified
       interpreter,giving    it	    the	    name     of	    the	    originally
       exec'dfileasanargumentand  shifting  over  the  rest  of	 the  original
       arguments.

       There can be no return from a successful or execv,  since  the  calling
       core  image  is	lost.  This is the mechanism whereby different process
       images become active.

       The argument argv is a null-terminated array of character  pointers  to
       null-terminated	 character  strings.   These  strings  constitute  the
       argument list to be made available to the new process.  By  convention,
       at  least  one  argument	 must  be present in this array, and the first
       element of this array should be the name of the executed program	 (that
       is, the last component of path).

       The  execve function takes an additional argument envp which is a null-
       terminated array of  character  pointers	 to  null-terminated  strings.
       These  strings pass information to the new process that is not directly
       an argument to the command (see environ(7)).

       Descriptors open in the calling process remain open in the new process,
       except  for  those  for	which  the  close-on-exec  flag	 is  set  (see
       fcntl(2)).  Descriptors that remain open are unaffected	by  execve  or
       execv.

       Directory  streams  open in the calling process image are closed in the
       new process image.

       Ignored signals remain ignored across an execve or execv,  but  signals
       that  are  caught  are  reset to their default values.  Blocked signals
       remain blocked regardless of changes to the signal action.  The	signal
       stack is reset to be undefined (see sigvec(2) for more information).

       Each  process  has real user and group IDs and effective user and group
       IDs.  The real ID identifies the person using the system; the effective
       ID  determines  his  access privileges.	The execve and execv functions
       change the effective user and group ID to the  owner  of	 the  executed
       file  if	 the  file has the “set-user-ID” or “set-group-ID” modes.  The
       real user ID is not affected.  The  effective  user  ID	and  effective
       group ID of the new process image will be saved (as the saved set-user-
       ID and the saved set-group-ID) for use by the setuid(2)function.

       The new process also inherits the following attributes from the calling
       process:

	      process ID		    see getpid(2)
	      parent process ID		    see getppid(2)
	      process group ID		    see getpgrp(2)
	      session membership	    see setsid(2)
	      real user ID		    see getuid(2)
	      real group ID		    see getgid(2)
	      supplementary group IDs	    see getgroups(2)
	      time left until an alarm clock signalsee getitimer(2)
	      current working directory	    see getwd(3) or getcwd(3P)
	      root directory		    see chroot(2)
	      file mode mask		    see umask(2)
	      signal mask		    see sigprocmask(2)
	      pending signals		    see sigpending(2)
	      tms_utime, tms_stime, tms_cutime, tms_cstimesee times(2)
	      controlling terminal	    see tty(4)
	      resource usages		    see getrusage(2)
	      resource limits		    see getrlimit(2)

       When the executed program begins, it is called as follows:

	    main(int argc, char *argv);

       where  argc  is	the number of elements in argv (the ``arg count'') and
       argv is the array of character pointers to the arguments themselves.

       Envp  is	 a  pointer  to	 an  array  of	strings	 that  constitute  the
       environment  of the process.  A pointer to this array is also stored in
       the global variable ``environ''.	 Each string consists of  a  name,  an
       “=”,  and a null-terminated value.  The array of pointers is terminated
       by a null pointer.  The shell sh(1) passes  an  environment  entry  for
       each  global  shell  variable  defined when the program is called.  See
       environ(7) for some conventionally used names.

RETURN VALUE
       If execve or  execv  returns  to	 the  calling  process	an  error  has
       occurred;  the  return  value  will be -1 and the global variable errno
       will contain an error code.

ERRORS
       The execve and execv functions will fail	 and  return  to  the  calling
       process if one or more of the following are true:

       [ENOTDIR]      A component of the path prefix is not a directory.

       [EINVAL]	      The  pathname  contains  a character with the high-order
		      bit set.

       [ENAMETOOLONG] A component of  path  exceeds  255  characters,  or  the
		      entire  pathname	exceeds	 1023  characters.   For POSIX
		      applications these values are  given  by	the  constants
		      {NAME_MAX} and {PATH_MAX}, respectively.

       [ENOENT]	      The new process file does not exist or path points to an
		      empty string.

       [ELOOP]	      Too many symbolic links were encountered in  translating
		      the pathname.

       [EACCES]	      Search  permission is denied for a component of the path
		      prefix.

       [EACCES]	      The new process file is not an ordinary file.

       [EACCES]	      The new process file mode denies execute permission.

       [ENOEXEC]      The  new	process	 file  has  the	  appropriate	access
		      permission,  but	has  an	 invalid  magic	 number in its
		      header.

       [ETXTBSY]      The new process file is a pure procedure	(shared	 text)
		      file  that  is  currently open for writing or reading by
		      some process.

       [E2BIG]	      The number of bytes in the new process's	argument  list
		      is  larger  than the system-imposed limit.  The limit in
		      the  system  as  released	 is  20480  bytes  (NCARGS  in
		      <sys/param.h>.

       [EFAULT]	      The  new process file is not as long as indicated by the
		      size values in its header.

       [EFAULT]	      path, argv, or envp point to an illegal address.

       [EIO]	      An I/O  error  occurred  while  reading  from  the  file
		      system.

CAVEATS
       If  a  program  is setuid to a non-super-user, but is executed when the
       real uid is ``root'', then the program has some	of  the	 powers	 of  a
       super-user as well.

SEE ALSO
       exit(2), fork(2), execl(3P), environ(7)

				August 1, 1992			     EXECVE(2)
[top]
                             _         _         _ 
                            | |       | |       | |     
                            | |       | |       | |     
                         __ | | __ __ | | __ __ | | __  
                         \ \| |/ / \ \| |/ / \ \| |/ /  
                          \ \ / /   \ \ / /   \ \ / /   
                           \   /     \   /     \   /    
                            \_/       \_/       \_/ 
More information is available in HTML format for server OPENSTEP

List of man pages available for OPENSTEP

Copyright (c) for man pages and the logo by the respective OS vendor.

For those who want to learn more, the polarhome community provides shell access and support.

[legal] [privacy] [GNU] [policy] [cookies] [netiquette] [sponsors] [FAQ]
Tweet
Polarhome, production since 1999.
Member of Polarhome portal.
Based on Fawad Halim's script.
....................................................................
Vote for polarhome
Free Shell Accounts :: the biggest list on the net