Museum

Home

Lab Overview

Retrotechnology Articles

Online Manuals

⇒ execvp(2) — svr4 — mips UMIPS RISC/os 5.01

Media Vault

Software Library

Restoration Projects

Artifacts Sought

Related Articles

alarm(2)

exit(2)

fcntl(2)

fork(2)

getrlimit(2)

nice(2)

priocntl(2)

ptrace(2)

semop(2)

signal(2)

sigpending(2)

sigprocmask(2)

times(2)

umask(2)

lockf(3C)

system(3S)

a.out(4)

environ(5)

sh(1)

ps(1)



EXEC(2-SVR4)        RISC/os Reference Manual         EXEC(2-SVR4)



NAME
     exec: execl, execv, execle, execve, execlp, execvp - execute
          a file

SYNOPSIS
     #include <unistd.h>

     int execl (const char *path, const char *arg0, ..., const
          char *argn, (char *)0);

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

     int execle (const char *path, const char *arg0, ..., const
          char *argn, (char *0), const char *envp[]);

     int execve (const char *path, char *const *argv, char *const
          *cnup);

     int execlp (const char *file, const char *arg0, ..., const
          char *argn, (char *)0);

     int execvp (const char *file, char *const *argv);

DESCRIPTION
     exec in all its forms overlays a new process image on an old
     process.  The new process image is constructed from an ordi-
     nary, executable file.  This file is  either  an  executable
     object  file,  or  a file of data for an interpreter.  There
     can be no return from a successful exec because the  calling
     process image is overlaid by the new process image.

     An interpreter file begins with a line of the form

          #! pathname [arg]

     where pathname is the path of the interpreter, and arg is an
     optional  argument.  When an interpreter file is exec'd, the
     system execs the specified interpreter.  The pathname speci-
     fied in the interpreter file is passed as arg0 to the inter-
     preter.  If arg was specified in the interpreter file, it is
     passed  as arg1 to the interpreter.  The remaining arguments
     to the interpreter are arg0 through argn of  the  originally
     exec'd file.

     When a C program is executed, it is called as follows:

          int main (int argc, char *argv[], char *envp[]);

     where argc is the argument count, argv is an array of  char-
     acter  pointers  to the arguments themselves, and envp is an
     array of character pointers to the environment strings.   As
     indicated, argc is at least one, and the first member of the



                        Printed 11/19/92                   Page 1





EXEC(2-SVR4)        RISC/os Reference Manual         EXEC(2-SVR4)



     array points to a string containing the name of the file.

     path points to a path name that identifies the  new  process
     file.

     file points to the new process file.  If file does not  con-
     tain  a  slash  character,  the path prefix for this file is
     obtained by a search of the directories passed in  the  PATH
     environment  variable  [see environ(5)].  The environment is
     supplied typically by the shell [see sh(1)].

     If the new process file is not an  executable  object  file,
     execlp  and execvp use the contents of that file as standard
     input to sh(1).

     The arguments arg0, ..., argn point to null-terminated char-
     acter  strings.   These strings constitute the argument list
     available to the new process image.  Minimally, arg0 must be
     present.   It  will  become  the  name  of  the  process, as
     displayed by the ps command.  Conventionally, arg0 points to
     a  string that is the same as path (or the last component of
     path).  The list of argument  strings  is  terminated  by  a
     (char *)0 argument.

     argv is an array of character  pointers  to  null-terminated
     strings.   These strings constitute the argument list avail-
     able to the new process image.   By  convention,  argv  must
     have  at  least  one member, and it should point to a string
     that is the same as path (or its last component).   argv  is
     terminated by a null pointer.

     envp is an array of character  pointers  to  null-terminated
     strings.   These  strings constitute the environment for the
     new process image.  envp is terminated by  a  null  pointer.
     For  execl, execv, execvp, and execlp, the C run-time start-
     off routine places a pointer to the environment of the  cal-
     ling process in the global object extern char **environ, and
     it is used to pass the environment of the calling process to
     the new process.

     File descriptors open in the calling process remain open  in
     the  new  process, except for those whose close-on-exec flag
     is set; [see fcntl(2)].  For  those  file  descriptors  that
     remain open, the file pointer is unchanged.

     Signals that are being caught by the calling process are set
     to  the  default  disposition  in the new process image [see
     signal(2)].  Otherwise, the new process image  inherits  the
     signal dispositions of the calling process.

     If the set-user-ID mode bit of the new process file  is  set
     [see  chmod(2)],  exec sets the effective user ID of the new



 Page 2                 Printed 11/19/92





EXEC(2-SVR4)        RISC/os Reference Manual         EXEC(2-SVR4)



     process to the owner ID of the new process file.  Similarly,
     if the set-group-ID mode bit of the new process file is set,
     the effective group ID of the new  process  is  set  to  the
     group ID of the new process file.  The real user ID and real
     group ID of the new process remain the same as those of  the
     calling process.

     If the effective user-ID is  root  or  superuser,  the  set-
     user-ID  and set-group-ID bits will be honored when the pro-
     cess is being controlled by ptrace.

     The shared memory segments attached to the  calling  process
     will not be attached to the new process [see shmop(2)].

     Profiling is disabled for the new process; see profil(2).

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

          nice value [see nice(2)]
          scheduler class and priority [see priocntl(2)]
          process ID
          parent process ID
          process group ID
          supplementary group IDs
          semadj values [see semop(2)]
          session ID [see exit(2) and signal(2)]
          trace flag [see ptrace(2) request 0]
          time left until an alarm clock signal [see alarm(2)]
          current working directory
          root directory
          file mode creation mask [see umask(2)]
          resource limits [see getrlimit(2)]
          utime, stime, cutime, and cstime [see times(2)]
          file-locks [see fcntl(2) and lockf(3C)]
          controlling terminal
          process signal mask [see sigprocmask(2)]
          pending signals [see sigpending(2)]

     Upon  successful  completion,  exec  marks  for  update  the
     st_atime  field  of  the file.  Should the exec succeed, the
     process image file is considered to have been open()-ed. The
     corresponding close() is considered to occur at a time after
     this open, but before process termination or successful com-
     pletion of a subsequent call to exec.

     exec will fail and return to the calling process if  one  or
     more of the following are true:

     EACCES              Search permission is denied for a direc-
                         tory  listed  in  the new process file's
                         path prefix.



                        Printed 11/19/92                   Page 3





EXEC(2-SVR4)        RISC/os Reference Manual         EXEC(2-SVR4)



     E2BIG               The number of bytes in the new process's
                         argument   list   is  greater  than  the
                         system-imposed limit of 5120 bytes.  The
                         argument  list  limit is sum of the size
                         of the argument list plus  the  size  of
                         the  environment's  exported shell vari-
                         ables.

     EACCES              The new process file is not an  ordinary
                         file.

     EACCES              The new process file mode denies  execu-
                         tion permission.

     EAGAIN              Total amount of system memory  available
                         when  reading via raw I/O is temporarily
                         insufficient.

     EFAULT              Required hardware is not present.

     EFAULT              An a.out that was compiled with the  MAU
                         or  32B  flag  is  running  on a machine
                         without a MAU or 32B.

     EFAULT              An  argument  points   to   an   illegal
                         address.

     EINTR               A signal was caught during the exec sys-
                         tem call.

     ELIBACC             Required shared library  does  not  have
                         execute permission.

     ELIBEXEC            Trying  to  exec(2)  a  shared   library
                         directly.

     ELOOP               Too many symbolic links were encountered
                         in translating path or file.

     EMULTIHOP           Components of path  require  hopping  to
                         multiple  remote  machines  and the file
                         system type does not allow it.

     ENAMETOOLONG        The length of the file or path  argument
                         exceeds  {PATH_MAX},  or the length of a
                         file  or  path   i   component   exceeds
                         {NAME_MAX}  while  _POSIX_NO_TRUNC is in
                         effect.

     ENOENT              One or more components of the  new  pro-
                         cess  path name of the file do not exist
                         or is a null pathname.



 Page 4                 Printed 11/19/92





EXEC(2-SVR4)        RISC/os Reference Manual         EXEC(2-SVR4)



     ENOTDIR             A component of the new process  path  of
                         the file prefix is not a directory.

     ENOEXEC             The exec is not an execlp or execvp, and
                         the new process file has the appropriate
                         access permission but 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 by some process.

     ENOMEM              The new  process  requires  more  memory
                         than  is  allowed  by the system-imposed
                         maximum MAXMEM.

     ENOLINK             path points to a remote machine and  the
                         link   to  that  machine  is  no  longer
                         active.

SEE ALSO
     alarm(2), exit(2), fcntl(2), fork(2), getrlimit(2), nice(2),
     priocntl(2),  ptrace(2), semop(2), signal(2), sigpending(2),
     sigprocmask(2), times(2), umask(2),  lockf(3C),  system(3S),
     a.out(4), environ(5).
     sh(1), ps(1) in the User's Reference Manual.

DIAGNOSTICS
     If exec  returns  to  the  calling  process,  an  error  has
     occurred;  the  return value is -1 and errno is set to indi-
     cate the error.
























                        Printed 11/19/92                   Page 5



Typewritten Software • bear@typewritten.org • Edmonds, WA 98026