summaryrefslogtreecommitdiff
path: root/static/openbsd/man3/execv.3
diff options
context:
space:
mode:
Diffstat (limited to 'static/openbsd/man3/execv.3')
-rw-r--r--static/openbsd/man3/execv.3264
1 files changed, 264 insertions, 0 deletions
diff --git a/static/openbsd/man3/execv.3 b/static/openbsd/man3/execv.3
new file mode 100644
index 00000000..6e4f1485
--- /dev/null
+++ b/static/openbsd/man3/execv.3
@@ -0,0 +1,264 @@
+.\" $OpenBSD: execv.3,v 1.2 2023/05/13 16:36:40 kn 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.
+.\"
+.Dd $Mdocdate: May 13 2023 $
+.Dt EXECV 3
+.Os
+.Sh NAME
+.Nm execl ,
+.Nm execlp ,
+.Nm execle ,
+.Nm execv ,
+.Nm execvp ,
+.Nm execvpe
+.Nd execute a file
+.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 execv "const char *path" "char *const argv[]"
+.Ft int
+.Fn execvp "const char *file" "char *const argv[]"
+.Ft int
+.Fn execvpe "const char *file" "char *const argv[]" "char *const envp[]"
+.Sh DESCRIPTION
+This family of functions replace the current process image with a
+new process image.
+The functions described in this manual page are front-ends for the
+.Xr execve 2
+system call; see that manual page for detailed information
+about the replacement of the current process.
+.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
+.Fa arg0 ,
+.Fa arg1 ,
+\&...,
+.Fa argn .
+Together they describe a list of one or more pointers to
+NUL-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 null pointer.
+.Pp
+The
+.Fn execv ,
+.Fn execvp
+and
+.Fn execvpe
+functions provide an array of pointers to
+NUL-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
+.Em must
+be terminated by a null pointer itself.
+.Pp
+The
+.Fn execle
+and
+.Fn execvpe
+functions also specify the environment of the executed process by following
+the null
+pointer that terminates the list of arguments in the parameter list
+or the pointer to the
+.Va argv
+array with an additional parameter.
+This additional parameter is an array of pointers to NUL-terminated
+strings and
+.Em must
+be terminated by a null pointer itself.
+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 ,
+.Fn execvp
+and
+.Fn execvpe
+will duplicate the actions of the shell in searching for an executable file
+if the specified file name does not contain a slash
+.Pq Sq \&/
+character.
+The search path is the path specified in the environment by
+.Ev PATH
+variable.
+If this variable isn't specified,
+.Dv _PATH_DEFPATH
+from
+.In paths.h
+is used instead, consisting of
+.Pa /usr/bin ,
+.Pa /bin ,
+.Pa /usr/sbin ,
+.Pa /sbin ,
+.Pa /usr/X11R6/bin ,
+.Pa /usr/local/bin ,
+.Pa /usr/local/sbin .
+.Pp
+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.)
+.Sh RETURN VALUES
+If any of these functions return, an error has 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
+default shell program
+.El
+.Sh ERRORS
+.Fn execl ,
+.Fn execle ,
+.Fn execlp ,
+.Fn execvp ,
+and
+.Fn execvpe
+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 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 ktrace 2 ,
+.Xr ptrace 2 ,
+.Xr environ 7
+.Sh STANDARDS
+Historically, the default path for the
+.Fn execlp
+and
+.Fn execvp
+functions was
+.Pa \&. ,
+.Pa /bin ,
+.Pa /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.
+.Pp
+.Fn execl ,
+.Fn execv ,
+.Fn execle ,
+.Fn execlp
+and
+.Fn execvp
+conform to
+.St -p1003.1-88 .
+.Fn execvpe
+is a GNU extension.
+.Sh HISTORY
+The functions
+.Fn execl
+and
+.Fn execv
+first appeared in
+.At v2 .
+A predecessor to
+.Fn execvp ,
+.Fn pexec ,
+first appeared in the Programmer's Workbench (PWB/UNIX).
+The functions
+.Fn execle ,
+.Fn execlp ,
+.Fn execve ,
+and
+.Fn execvp
+first appeared in
+.At v7 .