exec(3p) - phpMan

Command: man perldoc info search(apropos)  


EXEC(P)                                                                EXEC(P)



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

SYNOPSIS
       #include <unistd.h>

       extern char **environ;
       int execl(const char *path, const char *arg0, ... /*, (char *)0 */);
       int execv(const char *path, char *const argv[]);
       int execle(const char *path, const char *arg0, ... /*,
              (char *)0, char *const envp[]*/);
       int execve(const char *path, char *const argv[], char *const envp[]);
       int execlp(const char *file, const char *arg0, ... /*, (char *)0 */);
       int execvp(const char *file, char *const argv[]);


DESCRIPTION
       The  exec  family  of  functions shall replace the current process image with a new
       process image. The new image shall be constructed from a regular,  executable  file
       called the new process image file. There shall be no return from a successful exec,
       because the calling process image is overlaid by the new process image.

       When a C-language program is executed as a result of this call, it shall be entered
       as a C-language function call as follows:


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

       where  argc is the argument count and argv is an array of character pointers to the
       arguments themselves. In addition, the following variable:


              extern char **environ;

       is initialized as a pointer to an array of character pointers  to  the  environment
       strings.  The  argv  and  environ arrays are each terminated by a null pointer. The
       null pointer terminating the argv array is not counted in argc.

       Conforming multi-threaded applications shall not use the environ variable to access
       or modify any environment variable while any other thread is concurrently modifying
       any environment variable.  A call to any  function  dependent  on  any  environment
       variable  shall be considered a use of the environ variable to access that environ-
       ment variable.

       The arguments specified by a program with one of the exec functions shall be passed
       on to the new process image in the corresponding main() arguments.

       The  argument path points to a pathname that identifies the new process image file.

       The argument file is used to construct a pathname that identifies the  new  process
       image  file.  If  the  file  argument contains a slash character, the file argument
       shall be used as the pathname for this file. Otherwise, the path  prefix  for  this
       file  is obtained by a search of the directories passed as the environment variable
       PATH (see the Base Definitions volume of IEEE Std 1003.1-2001, Chapter 8,  Environ-
       ment  Variables).   If this environment variable is not present, the results of the
       search are implementation-defined.

       There are two distinct ways in which the contents of the  process  image  file  may
       cause  the  execution  to  fail,  distinguished  by  the setting of errno to either
       [ENOEXEC] or [EINVAL] (see the ERRORS section). In the cases where the  other  mem-
       bers  of  the  exec  family of functions would fail and set errno to [ENOEXEC], the
       execlp() and execvp()  functions  shall  execute  a  command  interpreter  and  the
       environment of the executed command shall be as if the process invoked the sh util-
       ity using execl() as follows:


              execl(<shell path>, arg0, file, arg1, ..., (char *)0);

       where <shell path> is an unspecified pathname for the sh utility, file is the  pro-
       cess  image  file,  and for execvp(), where arg0, arg1, and so on correspond to the
       values passed to execvp() in argv[0], argv[1], and so on.

       The arguments represented by arg0,... are  pointers  to  null-terminated  character
       strings. These strings shall constitute the argument list available to the new pro-
       cess image. The list is terminated by a null  pointer.  The  argument  arg0  should
       point to a filename that is associated with the process being started by one of the
       exec functions.

       The argument argv is an array of character pointers to null-terminated strings. The
       application  shall  ensure  that  the  last member of this array is a null pointer.
       These strings shall constitute the argument  list  available  to  the  new  process
       image.  The value in argv[0] should point to a filename that is associated with the
       process being started by one of the exec functions.

       The argument envp is an array of character  pointers  to  null-terminated  strings.
       These  strings shall constitute the environment for the new process image. The envp
       array is terminated by a null pointer.

       For those forms not containing an envp pointer ( execl(),  execv(),  execlp(),  and
       execvp()), the environment for the new process image shall be taken from the exter-
       nal variable environ in the calling process.

       The number of bytes available for the new process’ combined argument  and  environ-
       ment  lists  is  {ARG_MAX}.  It is implementation-defined whether null terminators,
       pointers, and/or any alignment bytes are included in this total.

       File descriptors open in the calling process image shall remain  open  in  the  new
       process  image,  except  for those whose close-on- exec flag FD_CLOEXEC is set. For
       those file descriptors that remain open, all attributes of the open  file  descrip-
       tion remain unchanged. For any file descriptor that is closed for this reason, file
       locks are removed as a result of the close as described in close() . Locks that are
       not removed by closing of file descriptors remain unchanged.

       If  file  descriptors 0, 1, and 2 would otherwise be closed after a successful call
       to one of the exec family of functions, and the new process image file has the set-
       user-ID or set-group-ID file mode bits set,    and the ST_NOSUID bit is not set for
       the file system containing the new process image file,  implementations may open an
       unspecified file for each of these file descriptors in the new process image.

       Directory streams open in the calling process image shall be closed in the new pro-
       cess image.

       The state of the floating-point environment in the new process image shall  be  set
       to the default.

       The state of conversion descriptors and message catalog descriptors in the new pro-
       cess image is undefined.   For the new process image, the equivalent of:


              setlocale(LC_ALL, "C")

       shall be executed at start-up.

       Signals set to the default action (SIG_DFL) in the calling process image  shall  be
       set to the default action in the new process image. Except for SIGCHLD, signals set
       to be ignored (SIG_IGN) by the calling process image shall be set to be ignored  by
       the  new process image. Signals set to be caught by the calling process image shall
       be set to the default action in the new process  image  (see  <signal.h>).  If  the
       SIGCHLD signal is set to be ignored by the calling process image, it is unspecified
       whether the SIGCHLD signal is set to be ignored or to the default action in the new
       process  image.    After  a successful call to any of the exec functions, alternate
       signal stacks are not preserved and the SA_ONSTACK flag shall be  cleared  for  all
       signals.

       After a successful call to any of the exec functions, any functions previously reg-
       istered by atexit() are no longer registered.

       If the ST_NOSUID bit is set for the file system containing the  new  process  image
       file,  then the effective user ID, effective group ID, saved set-user-ID, and saved
       set-group-ID are unchanged in the new process image. Otherwise,  if the set-user-ID
       mode  bit  of  the  new process image file is set, the effective user ID of the new
       process image shall be set to the user ID of the new process image file. Similarly,
       if  the  set-group-ID  mode bit of the new process image file is set, the effective
       group ID of the new process image shall be set to the group ID of the  new  process
       image file. The real user ID, real group ID, and supplementary group IDs of the new
       process image shall remain the same as those of  the  calling  process  image.  The
       effective  user  ID  and effective group ID of the new process image shall be saved
       (as the saved set-user-ID and the saved set-group-ID) for use by setuid().

       Any shared memory segments attached to the  calling  process  image  shall  not  be
       attached to the new process image.

       Any named semaphores open in the calling process shall be closed as if by appropri-
       ate calls to sem_close().

       Any blocks of typed memory that were mapped in the calling process are unmapped, as
       if munmap() was implicitly called to unmap them.

       Memory  locks established by the calling process via calls to mlockall() or mlock()
       shall be removed. If locked pages in the address space of the calling  process  are
       also mapped into the address spaces of other processes and are locked by those pro-
       cesses, the locks established by the other processes shall  be  unaffected  by  the
       call  by  this process to the exec function. If the exec function fails, the effect
       on memory locks is unspecified.

       Memory mappings created in the process are unmapped before  the  address  space  is
       rebuilt for the new process image.

       For  the  SCHED_FIFO and SCHED_RR scheduling policies, the policy and priority set-
       tings shall not be changed by a call to an  exec  function.  For  other  scheduling
       policies, the policy and priority settings on exec are implementation-defined.

       Per-process timers created by the calling process shall be deleted before replacing
       the current process image with the new process image.

       All open message queue descriptors in the  calling  process  shall  be  closed,  as
       described in mq_close() .

       Any outstanding asynchronous I/O operations may be canceled. Those asynchronous I/O
       operations that are not canceled shall complete as if the exec function had not yet
       occurred,  but  any  associated  signal  notifications  shall  be suppressed. It is
       unspecified whether the exec function itself blocks awaiting such  I/O  completion.
       In  no  event, however, shall the new process image created by the exec function be
       affected by the presence of outstanding asynchronous I/O operations at the time the
       exec function is called. Whether any I/O is canceled, and which I/O may be canceled
       upon exec, is implementation-defined.

       The new process image shall inherit the  CPU-time  clock  of  the  calling  process
       image.  This inheritance means that the process CPU-time clock of the process being
       exec-ed shall not be reinitialized or altered as a  result  of  the  exec  function
       other  than  to  reflect  the time spent by the process executing the exec function
       itself.

       The initial value of the CPU-time clock of the initial thread of  the  new  process
       image shall be set to zero.

       If  the calling process is being traced, the new process image shall continue to be
       traced into the same trace stream as the original process image, but the  new  pro-
       cess  image  shall not inherit the mapping of trace event names to trace event type
       identifiers that was defined by calls  to  the  posix_trace_eventid_open()  or  the
       posix_trace_trid_eventid_open() functions in the calling process image.

       If  the  calling process is a trace controller process, any trace streams that were
       created  by  the  calling  process  shall  be  shut  down  as  described   in   the
       posix_trace_shutdown() function.

       The  new  process  shall inherit at least the following attributes from the calling
       process image:

        * Nice value (see nice() )


        * semadj values (see semop() )


        * Process ID


        * Parent process ID


        * Process group ID


        * Session membership


        * Real user ID


        * Real group ID


        * Supplementary group IDs


        * Time left until an alarm clock signal (see alarm() )


        * Current working directory


        * Root directory


        * File mode creation mask (see umask() )


        * File size limit (see ulimit() )


        * Process signal mask (see sigprocmask() )


        * Pending signal (see sigpending() )


        * tms_utime, tms_stime, tms_cutime, and tms_cstime (see times() )


        * Resource limits


        * Controlling terminal


        * Interval timers


       All other process attributes defined in this volume of  IEEE Std 1003.1-2001  shall
       be  the  same  in  the  new  and  old  process  images.  The inheritance of process
       attributes not defined by this volume of  IEEE Std 1003.1-2001  is  implementation-
       defined.

       A  call  to any exec function from a process with more than one thread shall result
       in all threads being terminated and the new executable image being loaded and  exe-
       cuted. No destructor functions shall be called.

       Upon  successful  completion, the exec functions shall mark for update the st_atime
       field of the file. If an exec function failed but was able to  locate  the  process
       image  file, whether the st_atime field is marked for update is unspecified. Should
       the exec function succeed, the process image file shall be considered to have  been
       opened  with  open().   The corresponding close() shall be considered to occur at a
       time after this open, but before process termination or successful completion of  a
       subsequent  call  to  one  of the exec functions, posix_spawn(), or posix_spawnp().
       The argv[] and envp[] arrays of pointers and the  strings  to  which  those  arrays
       point  shall  not  be  modified by a call to one of the exec functions, except as a
       consequence of replacing the process image.

       The saved resource limits in the new process image are set to be a copy of the pro-
       cess’ corresponding hard and soft limits.

RETURN VALUE
       If  one  of  the  exec functions returns to the calling process image, an error has
       occurred; the return value shall be -1, and errno shall  be  set  to  indicate  the
       error.

ERRORS
       The exec functions shall fail if:

       E2BIG  The  number of bytes used by the new process image’s argument list and envi-
              ronment list is greater than the system-imposed limit of {ARG_MAX} bytes.

       EACCES Search permission is denied for a directory listed in the new process  image
              file’s  path  prefix, or the new process image file denies execution permis-
              sion, or the new process image file is not a regular file and the  implemen-
              tation does not support execution of files of its type.

       EINVAL The  new  process image file has the appropriate permission and has a recog-
              nized executable binary format, but the system does not support execution of
              a file with this format.

       ELOOP  A loop exists in symbolic links encountered during resolution of the path or
              file argument.

       ENAMETOOLONG
              The length of the path or file arguments exceeds {PATH_MAX}  or  a  pathname
              component is longer than {NAME_MAX}.

       ENOENT A  component  of path or file does not name an existing file or path or file
              is an empty string.

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


       The exec functions, except for execlp() and execvp(), shall fail if:

       ENOEXEC
              The  new process image file has the appropriate access permission but has an
              unrecognized format.


       The exec functions may fail if:

       ELOOP  More than {SYMLOOP_MAX} symbolic links were encountered during resolution of
              the path or file argument.

       ENAMETOOLONG
              As  a result of encountering a symbolic link in resolution of the path argu-
              ment, the length of the substituted pathname string exceeded {PATH_MAX}.

       ENOMEM The new process image requires more memory than is allowed by  the  hardware
              or system-imposed memory management constraints.

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


       The following sections are informative.

EXAMPLES
   Using execl()
       The following example executes the ls command, specifying the pathname of the  exe-
       cutable  ( /bin/ls) and using arguments supplied directly to the command to produce
       single-column output.


              #include <unistd.h>


              int ret;
              ...
              ret = execl ("/bin/ls", "ls", "-1", (char *)0);

   Using execle()
       The following example is similar to Using execl() . In addition, it  specifies  the
       environment for the new process image using the env argument.


              #include <unistd.h>


              int ret;
              char *env[] = { "HOME=/usr/home", "LOGNAME=home", (char *)0 };
              ...
              ret = execle ("/bin/ls", "ls", "-l", (char *)0, env);

   Using execlp()
       The  following example searches for the location of the ls command among the direc-
       tories specified by the PATH environment variable.


              #include <unistd.h>


              int ret;
              ...
              ret = execlp ("ls", "ls", "-l", (char *)0);

   Using execv()
       The following example passes arguments to the ls command in the cmd array.


              #include <unistd.h>


              int ret;
              char *cmd[] = { "ls", "-l", (char *)0 };
              ...
              ret = execv ("/bin/ls", cmd);

   Using execve()
       The following example passes arguments to the ls command  in  the  cmd  array,  and
       specifies the environment for the new process image using the env argument.


              #include <unistd.h>


              int ret;
              char *cmd[] = { "ls", "-l", (char *)0 };
              char *env[] = { "HOME=/usr/home", "LOGNAME=home", (char *)0 };
              ...
              ret = execve ("/bin/ls", cmd, env);

   Using execvp()
       The  following example searches for the location of the ls command among the direc-
       tories specified by the PATH environment variable, and passes arguments to  the  ls
       command in the cmd array.


              #include <unistd.h>


              int ret;
              char *cmd[] = { "ls", "-l", (char *)0 };
              ...
              ret = execvp ("ls", cmd);

APPLICATION USAGE
       As  the  state of conversion descriptors and message catalog descriptors in the new
       process image is undefined, conforming applications should not rely  on  their  use
       and should close them prior to calling one of the exec functions.

       Applications  that  require  other than the default POSIX locale should call setlo-
       cale() with the appropriate parameters to establish the locale of the new  process.

       The environ array should not be accessed directly by the application.

       Applications  should  not depend on file descriptors 0, 1, and 2 being closed after
       an exec. A future version may allow these  file  descriptors  to  be  automatically
       opened for any process.

RATIONALE
       Early  proposals  required  that  the  value  of  argc  passed to main() be "one or
       greater". This was driven by the same requirement in drafts of the ISO C  standard.
       In  fact,  historical implementations have passed a value of zero when no arguments
       are supplied to the caller of the exec functions.   This  requirement  was  removed
       from   the   ISO C   standard   and   subsequently  removed  from  this  volume  of
       IEEE Std 1003.1-2001 as well. The wording,  in  particular  the  use  of  the  word
       should, requires a Strictly Conforming POSIX Application to pass at least one argu-
       ment to the exec function, thus guaranteeing that  argc  be  one  or  greater  when
       invoked by such an application. In fact, this is good practice, since many existing
       applications reference argv[0] without first checking the value of argc.

       The requirement on a Strictly Conforming POSIX Application  also  states  that  the
       value  passed as the first argument be a filename associated with the process being
       started. Although some existing applications pass a pathname rather than a filename
       in  some circumstances, a filename is more generally useful, since the common usage
       of argv[0] is in printing diagnostics. In some cases the filename passed is not the
       actual filename of the file; for example, many implementations of the login utility
       use a convention of prefixing a hyphen ( â€â€™-â€â€™ ) to the actual filename, which  indi-
       cates to the command interpreter being invoked that it is a "login shell".

       Historically  there have been two ways that implementations can exec shell scripts.

       One common historical implementation is that the execl(),  execv(),  execle(),  and
       execve()  functions return an [ENOEXEC] error for any file not recognizable as exe-
       cutable, including a  shell  script.  When  the  execlp()  and  execvp()  functions
       encounter such a file, they assume the file to be a shell script and invoke a known
       command  interpreter  to  interpret  such  files.   This   is   now   required   by
       IEEE Std 1003.1-2001.  These implementations of execvp() and execlp() only give the
       [ENOEXEC] error in the rare case of a problem with the command  interpreter’s  exe-
       cutable  file.  Because  of  these implementations, the [ENOEXEC] error is not men-
       tioned for execlp() or execvp(), although implementations can still give it.

       Another way that some historical implementations handle shell scripts is by  recog-
       nizing  the  first two bytes of the file as the character string "#!" and using the
       remainder of the first line of the file as the name of the command  interpreter  to
       execute.

       One  potential source of confusion noted by the standard developers is over how the
       contents of a process image file affect the behavior of the exec  family  of  func-
       tions. The following is a description of the actions taken:

        1. If the process image file is a valid executable (in a format that is executable
           and valid and having appropriate permission) for this system, then  the  system
           executes the file.


        2. If the process image file has appropriate permission and is in a format that is
           executable but not valid for this system  (such  as  a  recognized  binary  for
           another  architecture), then this is an error and errno is set to [EINVAL] (see
           later RATIONALE on [EINVAL]).


        3. If the process image file has appropriate permission but is not otherwise  rec-
           ognized:

            a. If  this  is  a  call  to  execlp() or execvp(), then they invoke a command
               interpreter assuming that the process image file is a shell script.


            b. If this is not a call to execlp() or execvp(), then  an  error  occurs  and
               errno is set to [ENOEXEC].



       Applications that do not require to access their arguments may use the form:


              main(void)
       as specified in the ISO C standard. However, the implementation will always provide
       the two arguments argc and argv, even if they are not used.

       Some implementations provide a third  argument  to  main()  called  envp.  This  is
       defined  as  a  pointer  to  the environment. The ISO C standard specifies invoking
       main() with two arguments, so implementations  must  support  applications  written
       this  way.  Since  this  volume of IEEE Std 1003.1-2001 defines the global variable
       environ, which is also provided by historical implementations and can be used  any-
       where  that  envp could be used, there is no functional need for the envp argument.
       Applications should use the getenv() function rather than accessing the environment
       directly  via  either  envp or environ. Implementations are required to support the
       two-argument calling sequence, but this does not prohibit  an  implementation  from
       supporting envp as an optional third argument.

       This  volume  of  IEEE Std 1003.1-2001 specifies that signals set to SIG_IGN remain
       set to SIG_IGN, and that the process signal mask be unchanged across an exec.  This
       is consistent with historical implementations, and it permits some useful function-
       ality, such as the nohup command. However, it should be noted  that  many  existing
       applications wrongly assume that they start with certain signals set to the default
       action and/or unblocked. In particular, applications written with a simpler  signal
       model that does not include blocking of signals, such as the one in the ISO C stan-
       dard, may not behave properly if invoked with some signals blocked.  Therefore,  it
       is  best  not to block or ignore signals across execs without explicit reason to do
       so, and especially not to block signals across execs of arbitrary (not closely  co-
       operating) programs.

       The  exec  functions  always  save the value of the effective user ID and effective
       group ID of the process at the completion of the exec, whether or not the set-user-
       ID or the set-group-ID bit of the process image file is set.

       The  statement about argv[] and envp[] being constants is included to make explicit
       to future writers of language bindings that these objects are completely  constant.
       Due to a limitation of the ISO C standard, it is not possible to state that idea in
       standard C. Specifying two levels of const- qualification for the argv[] and envp[]
       parameters  for  the  exec  functions may seem to be the natural choice, given that
       these functions do not modify either the array of pointers  or  the  characters  to
       which  the function points, but this would disallow existing correct code. Instead,
       only the array of pointers is noted as constant. The table of  assignment  compati-
       bility for dst= src derived from the ISO C standard summarizes the compatibility:

          dst:                char *[] const char *[] char *const[] const char *const[]
          src:
          char *[]            VALID    -              VALID         -
          const char *[]      -        VALID          -             VALID
          char * const []     -        -              VALID         -
          const char *const[] -        -              -             VALID

       Since  all  existing code has a source type matching the first row, the column that
       gives the most valid combinations is the third column. The only  other  possibility
       is  the  fourth column, but using it would require a cast on the argv or envp argu-
       ments. It is unfortunate that the fourth column cannot be used, because the  decla-
       ration a non-expert would naturally use would be that in the second row.

       The  ISO C  standard and this volume of IEEE Std 1003.1-2001 do not conflict on the
       use of environ, but some historical implementations of environ  may  cause  a  con-
       flict.   As long as environ is treated in the same way as an entry point (for exam-
       ple, fork()), it conforms to both standards.  A library can contain fork(), but  if
       there  is  a  user-provided  fork(), that fork() is given precedence and no problem
       ensues. The situation is similar for environ: the  definition  in  this  volume  of
       IEEE Std 1003.1-2001  is  to  be  used if there is no user-provided environ to take
       precedence.  At least three implementations are known  to  exist  that  solve  this
       problem.

       E2BIG  The  limit  {ARG_MAX} applies not just to the size of the argument list, but
              to the sum of that and the size of the environment list.

       EFAULT Some historical systems return [EFAULT] rather than [ENOEXEC] when  the  new
              process image file is corrupted. They are non-conforming.

       EINVAL This error condition was added to IEEE Std 1003.1-2001 to allow an implemen-
              tation to detect executable files generated for different architectures, and
              indicate  this  situation  to the application. Historical implementations of
              shells, execvp(), and execlp() that encounter an [ENOEXEC] error  will  exe-
              cute  a  shell  on the assumption that the file is a shell script. This will
              not produce the desired effect when the file is a  valid  executable  for  a
              different architecture. An implementation may now choose to avoid this prob-
              lem by returning [EINVAL] when a valid executable for a different  architec-
              ture  is  encountered.  Some  historical  implementations return [EINVAL] to
              indicate that the path argument contains a character with the high order bit
              set.  The  standard developers chose to deviate from historical practice for
              the following reasons:

               1. The new utilization of [EINVAL] will provide some measure of utility  to
                  the user community.


               2. Historical  use  of  [EINVAL]  is not acceptable in an internationalized
                  operating environment.


       ENAMETOOLONG
              Since the file pathname may be constructed by taking elements  in  the  PATH
              variable  and  putting  them  together with the filename, the [ENAMETOOLONG]
              error condition could also be reached this way.

       ETXTBSY
              System V returns this error when the executable file is currently  open  for
              writing  by  some  process.  This  volume  of  IEEE Std 1003.1-2001  neither
              requires nor prohibits this behavior.


       Other systems (such as System V)  may  return  [EINTR]  from  exec.   This  is  not
       addressed  by  this  volume of IEEE Std 1003.1-2001, but implementations may have a
       window between the call to exec and the time that a signal could cause one  of  the
       exec calls to return with [EINTR].

       An  explicit  statement regarding the floating-point environment (as defined in the
       <fenv.h> header) was added to make it clear that the floating-point environment  is
       set to its default when a call to one of the exec functions succeeds.  The require-
       ments for inheritance or setting to the default for other process and thread start-
       up functions is covered by more generic statements in their descriptions and can be
       summarized as follows:

       posix_spawn()
              Set to default.

       fork() Inherit.

       pthread_create()
              Inherit.


FUTURE DIRECTIONS
       None.

SEE ALSO
       alarm() , atexit() , chmod() , close() , exit() , fcntl() , fork() ,  fstatvfs()  ,
       getenv()  ,  getitimer()  ,  getrlimit()  ,  mmap()  ,  nice()  ,  posix_spawn()  ,
       posix_trace_eventid_open()  ,   posix_trace_shutdown()   ,   posix_trace_trid_even-
       tid_open()  ,  putenv()  ,  semop() , setlocale() , shmat() , sigaction() , sigalt-
       stack() , sigpending() , sigprocmask() , system() , times() , ulimit() , umask()  ,
       the  Base  Definitions volume of IEEE Std 1003.1-2001, Chapter 11, General Terminal
       Interface, <unistd.h>

COPYRIGHT
       Portions of this text are reprinted and reproduced in electronic form from IEEE Std
       1003.1,  2003  Edition,  Standard  for Information Technology -- Portable Operating
       System Interface (POSIX), The Open Group Base Specifications Issue 6, Copyright (C)
       2001-2003  by  the  Institute  of Electrical and Electronics Engineers, Inc and The
       Open Group. In the event of any discrepancy between this version and  the  original
       IEEE  and The Open Group Standard, the original IEEE and The Open Group Standard is
       the  referee  document.  The  original  Standard  can   be   obtained   online   at
       http://www.opengroup.org/unix/online.html .



POSIX                                2003                              EXEC(P)

Generated by $Id: phpMan.php,v 4.55 2007/09/05 04:42:51 chedong Exp $ Author: Che Dong
On Apache/1.3.41 (Unix) PHP/5.2.5 mod_perl/1.30 mod_gzip/1.3.26.1a
Under GNU General Public License
2008-12-02 05:13 @38.103.63.58 CrawledBy CCBot/1.0 (+http://www.commoncrawl.org/bot.html)
Valid XHTML 1.0!Valid CSS!