 b6cbf7203b
			
		
	
	
		b6cbf7203b
		
	
	
	
	
		
			
			This patch imports the unmodified current version of NetBSD libc. The NetBSD includes are in /nbsd_include, while the libc code itself is split between lib/nbsd_libc and common/lib/libc.
		
			
				
	
	
		
			263 lines
		
	
	
		
			6.8 KiB
		
	
	
	
		
			Groff
		
	
	
	
	
	
			
		
		
	
	
			263 lines
		
	
	
		
			6.8 KiB
		
	
	
	
		
			Groff
		
	
	
	
	
	
| .\"	$NetBSD: exec.3,v 1.21 2010/03/22 19:30:53 joerg Exp $
 | |
| .\"
 | |
| .\" Copyright (c) 1991, 1993
 | |
| .\"	The Regents of the University of California.  All rights reserved.
 | |
| .\"
 | |
| .\" Redistribution and use in source and binary forms, with or without
 | |
| .\" modification, are permitted provided that the following conditions
 | |
| .\" are met:
 | |
| .\" 1. Redistributions of source code must retain the above copyright
 | |
| .\"    notice, this list of conditions and the following disclaimer.
 | |
| .\" 2. Redistributions in binary form must reproduce the above copyright
 | |
| .\"    notice, this list of conditions and the following disclaimer in the
 | |
| .\"    documentation and/or other materials provided with the distribution.
 | |
| .\" 3. Neither the name of the University nor the names of its contributors
 | |
| .\"    may be used to endorse or promote products derived from this software
 | |
| .\"    without specific prior written permission.
 | |
| .\"
 | |
| .\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
 | |
| .\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
 | |
| .\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
 | |
| .\" ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
 | |
| .\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
 | |
| .\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
 | |
| .\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
 | |
| .\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
 | |
| .\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
 | |
| .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
 | |
| .\" SUCH DAMAGE.
 | |
| .\"
 | |
| .\"     @(#)exec.3	8.3 (Berkeley) 1/24/94
 | |
| .\"
 | |
| .Dd May 6, 2005
 | |
| .Dt EXEC 3
 | |
| .Os
 | |
| .Sh NAME
 | |
| .Nm execl ,
 | |
| .Nm execlp ,
 | |
| .Nm execle ,
 | |
| .Nm exect ,
 | |
| .Nm execv ,
 | |
| .Nm execvp
 | |
| .Nd execute a file
 | |
| .Sh LIBRARY
 | |
| .Lb libc
 | |
| .Sh SYNOPSIS
 | |
| .In unistd.h
 | |
| .Vt extern char **environ;
 | |
| .Ft int
 | |
| .Fn execl "const char *path" "const char *arg" ...
 | |
| .Ft int
 | |
| .Fn execlp "const char *file" "const char *arg" ...
 | |
| .Ft int
 | |
| .Fn execle "const char *path" "const char *arg" ... "char *const envp[]"
 | |
| .Ft int
 | |
| .Fn exect "const char *path" "char *const argv[]"  "char *const envp[]"
 | |
| .Ft int
 | |
| .Fn execv "const char *path" "char *const argv[]"
 | |
| .Ft int
 | |
| .Fn execvp "const char *file" "char *const argv[]"
 | |
| .Sh DESCRIPTION
 | |
| The
 | |
| .Nm 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
 | |
| .Xr execve 2 .
 | |
| (See the manual page for
 | |
| .Xr execve 2
 | |
| for detailed information about the replacement of the current process.
 | |
| The
 | |
| .Xr script 7
 | |
| manual page provides detailed information about the execution of
 | |
| interpreter scripts.)
 | |
| .Pp
 | |
| The initial argument for these functions is the pathname of a file which
 | |
| is to be executed.
 | |
| .Pp
 | |
| The
 | |
| .Fa "const char *arg"
 | |
| and subsequent ellipses in the
 | |
| .Fn execl ,
 | |
| .Fn execlp ,
 | |
| and
 | |
| .Fn execle
 | |
| functions can be thought of as
 | |
| .Em arg0 ,
 | |
| .Em arg1 ,
 | |
| \&...,
 | |
| .Em 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
 | |
| .Em must
 | |
| be terminated by a
 | |
| .Dv NULL
 | |
| pointer.
 | |
| .Pp
 | |
| The
 | |
| .Fn exect ,
 | |
| .Fn execv ,
 | |
| and
 | |
| .Fn 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
 | |
| .Sy must
 | |
| be terminated by a
 | |
| .Dv NULL
 | |
| pointer.
 | |
| .Pp
 | |
| The
 | |
| .Fn execle
 | |
| and
 | |
| .Fn exect
 | |
| functions also specify the environment of the executed process by following
 | |
| the
 | |
| .Dv 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
 | |
| .Em must
 | |
| be terminated by a
 | |
| .Dv NULL
 | |
| pointer.
 | |
| The other functions take the environment for the new process image from the
 | |
| external variable
 | |
| .Va environ
 | |
| in the current process.
 | |
| .Pp
 | |
| Some of these functions have special semantics.
 | |
| .Pp
 | |
| The functions
 | |
| .Fn execlp
 | |
| and
 | |
| .Fn execvp
 | |
| will duplicate the actions of the shell in searching for an executable file
 | |
| if the specified file name does not contain a slash
 | |
| .Dq Li \&/
 | |
| character.
 | |
| The search path is the path specified in the environment by the
 | |
| .Ev PATH
 | |
| variable.
 | |
| If this variable isn't specified,
 | |
| .Va _PATH_DEFPATH
 | |
| from
 | |
| .In paths.h
 | |
| is used instead, its value being:
 | |
| .Pa /usr/bin:/bin:/usr/pkg/bin:/usr/local/bin .
 | |
| In addition, certain errors are treated specially.
 | |
| .Pp
 | |
| If permission is denied for a file (the attempted
 | |
| .Xr execve 2
 | |
| returned
 | |
| .Er 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
 | |
| .Va errno
 | |
| set to
 | |
| .Er EACCES .
 | |
| .Pp
 | |
| If the header of a file isn't recognized (the attempted
 | |
| .Xr execve 2
 | |
| returned
 | |
| .Er 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.)
 | |
| .Pp
 | |
| If the file is currently busy (the attempted
 | |
| .Xr execve 2
 | |
| returned
 | |
| .Er ETXTBUSY ) ,
 | |
| these functions will sleep for several seconds,
 | |
| periodically re-attempting to execute the file.
 | |
| .Pp
 | |
| The function
 | |
| .Fn exect
 | |
| executes a file with the program tracing facilities enabled (see
 | |
| .Xr ptrace 2 ) .
 | |
| .Sh RETURN VALUES
 | |
| If any of the
 | |
| .Nm exec
 | |
| functions returns, an error will have occurred.
 | |
| The return value is \-1, and the global variable
 | |
| .Va errno
 | |
| will be set to indicate the error.
 | |
| .Sh FILES
 | |
| .Bl -tag -width /bin/sh -compact
 | |
| .It Pa /bin/sh
 | |
| The shell.
 | |
| .El
 | |
| .Sh ERRORS
 | |
| .Fn execl ,
 | |
| .Fn execle ,
 | |
| .Fn execlp
 | |
| and
 | |
| .Fn execvp
 | |
| may fail and set
 | |
| .Va errno
 | |
| for any of the errors specified for the library functions
 | |
| .Xr execve 2
 | |
| and
 | |
| .Xr malloc 3 .
 | |
| .Pp
 | |
| .Fn exect
 | |
| and
 | |
| .Fn execv
 | |
| may fail and set
 | |
| .Va errno
 | |
| for any of the errors specified for the library function
 | |
| .Xr execve 2 .
 | |
| .Sh SEE ALSO
 | |
| .Xr sh 1 ,
 | |
| .Xr execve 2 ,
 | |
| .Xr fork 2 ,
 | |
| .Xr ptrace 2 ,
 | |
| .Xr environ 7 ,
 | |
| .Xr script 7
 | |
| .Sh COMPATIBILITY
 | |
| Historically, the default path for the
 | |
| .Fn execlp
 | |
| and
 | |
| .Fn execvp
 | |
| functions was
 | |
| .Dq Pa :/bin:/usr/bin .
 | |
| This was changed to improve security and behaviour.
 | |
| .Pp
 | |
| The behavior of
 | |
| .Fn execlp
 | |
| and
 | |
| .Fn 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
 | |
| .Tn POSIX
 | |
| standard.
 | |
| .Pp
 | |
| Traditionally, the functions
 | |
| .Fn execlp
 | |
| and
 | |
| .Fn execvp
 | |
| ignored all errors except for the ones described above and
 | |
| .Er ENOMEM
 | |
| and
 | |
| .Er E2BIG ,
 | |
| upon which they returned.
 | |
| They now return if any error other than the ones described above occurs.
 | |
| .Sh STANDARDS
 | |
| .Fn execl ,
 | |
| .Fn execv ,
 | |
| .Fn execle ,
 | |
| .Fn execlp
 | |
| and
 | |
| .Fn execvp
 | |
| conform to
 | |
| .St -p1003.1-90 .
 |