xref: /freebsd/lib/libc/gen/exec.3 (revision c8b31033c3971b2b7349804ffda0cea5e4835b40)
158f0484fSRodney W. Grimes.\" Copyright (c) 1991, 1993
258f0484fSRodney W. Grimes.\"	The Regents of the University of California.  All rights reserved.
358f0484fSRodney W. Grimes.\"
458f0484fSRodney W. Grimes.\" Redistribution and use in source and binary forms, with or without
558f0484fSRodney W. Grimes.\" modification, are permitted provided that the following conditions
658f0484fSRodney W. Grimes.\" are met:
758f0484fSRodney W. Grimes.\" 1. Redistributions of source code must retain the above copyright
858f0484fSRodney W. Grimes.\"    notice, this list of conditions and the following disclaimer.
958f0484fSRodney W. Grimes.\" 2. Redistributions in binary form must reproduce the above copyright
1058f0484fSRodney W. Grimes.\"    notice, this list of conditions and the following disclaimer in the
1158f0484fSRodney W. Grimes.\"    documentation and/or other materials provided with the distribution.
12fbbd9655SWarner Losh.\" 3. Neither the name of the University nor the names of its contributors
1358f0484fSRodney W. Grimes.\"    may be used to endorse or promote products derived from this software
1458f0484fSRodney W. Grimes.\"    without specific prior written permission.
1558f0484fSRodney W. Grimes.\"
1658f0484fSRodney W. Grimes.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
1758f0484fSRodney W. Grimes.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
1858f0484fSRodney W. Grimes.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
1958f0484fSRodney W. Grimes.\" ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
2058f0484fSRodney W. Grimes.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
2158f0484fSRodney W. Grimes.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
2258f0484fSRodney W. Grimes.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
2358f0484fSRodney W. Grimes.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
2458f0484fSRodney W. Grimes.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
2558f0484fSRodney W. Grimes.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
2658f0484fSRodney W. Grimes.\" SUCH DAMAGE.
2758f0484fSRodney W. Grimes.\"
288ccd0b87SBrooks Davis.Dd December 11, 2023
2958f0484fSRodney W. Grimes.Dt EXEC 3
3058f0484fSRodney W. Grimes.Os
3158f0484fSRodney W. Grimes.Sh NAME
3258f0484fSRodney W. Grimes.Nm execl ,
3358f0484fSRodney W. Grimes.Nm execlp ,
3458f0484fSRodney W. Grimes.Nm execle ,
3558f0484fSRodney W. Grimes.Nm exect ,
3658f0484fSRodney W. Grimes.Nm execv ,
3709f49aabSGordon Tetlow.Nm execvp ,
388ccd0b87SBrooks Davis.Nm execvpe ,
3909f49aabSGordon Tetlow.Nm execvP
4058f0484fSRodney W. Grimes.Nd execute a file
4125bb73e0SAlexey Zelkin.Sh LIBRARY
4225bb73e0SAlexey Zelkin.Lb libc
4358f0484fSRodney W. Grimes.Sh SYNOPSIS
4432eef9aeSRuslan Ermilov.In unistd.h
4558f0484fSRodney W. Grimes.Vt extern char **environ ;
4658f0484fSRodney W. Grimes.Ft int
47bbc5c8eeSConrad Meyer.Fn execl "const char *path" "const char *arg" ... NULL
4858f0484fSRodney W. Grimes.Ft int
49bbc5c8eeSConrad Meyer.Fn execlp "const char *file" "const char *arg" ... NULL
5058f0484fSRodney W. Grimes.Ft int
51bbc5c8eeSConrad Meyer.Fn execle "const char *path" "const char *arg" ... NULL "char *const envp[]"
5258f0484fSRodney W. Grimes.Ft int
5358f0484fSRodney W. Grimes.Fn exect "const char *path" "char *const argv[]" "char *const envp[]"
5458f0484fSRodney W. Grimes.Ft int
5558f0484fSRodney W. Grimes.Fn execv "const char *path" "char *const argv[]"
5658f0484fSRodney W. Grimes.Ft int
5758f0484fSRodney W. Grimes.Fn execvp "const char *file" "char *const argv[]"
5809f49aabSGordon Tetlow.Ft int
598ccd0b87SBrooks Davis.Fn execvpe "const char *file" "char *const argv[]" "char *const envp[]"
608ccd0b87SBrooks Davis.Ft int
6109f49aabSGordon Tetlow.Fn execvP "const char *file" "const char *search_path" "char *const argv[]"
6258f0484fSRodney W. Grimes.Sh DESCRIPTION
6358f0484fSRodney W. GrimesThe
6458f0484fSRodney W. Grimes.Nm exec
6558f0484fSRodney W. Grimesfamily of functions replaces the current process image with a
6658f0484fSRodney W. Grimesnew process image.
6758f0484fSRodney W. GrimesThe functions described in this manual page are front-ends for the function
6858f0484fSRodney W. Grimes.Xr execve 2 .
6958f0484fSRodney W. Grimes(See the manual page for
70064f0074SMike Pritchard.Xr execve 2
7158f0484fSRodney W. Grimesfor detailed information about the replacement of the current process.)
7258f0484fSRodney W. Grimes.Pp
7358f0484fSRodney W. GrimesThe initial argument for these functions is the pathname of a file which
7458f0484fSRodney W. Grimesis to be executed.
7558f0484fSRodney W. Grimes.Pp
7658f0484fSRodney W. GrimesThe
7758f0484fSRodney W. Grimes.Fa "const char *arg"
7858f0484fSRodney W. Grimesand subsequent ellipses in the
7958f0484fSRodney W. Grimes.Fn execl ,
8058f0484fSRodney W. Grimes.Fn execlp ,
8158f0484fSRodney W. Grimesand
8258f0484fSRodney W. Grimes.Fn execle
8358f0484fSRodney W. Grimesfunctions can be thought of as
8458f0484fSRodney W. Grimes.Em arg0 ,
8558f0484fSRodney W. Grimes.Em arg1 ,
8658f0484fSRodney W. Grimes\&...,
8758f0484fSRodney W. Grimes.Em argn .
8858f0484fSRodney W. GrimesTogether they describe a list of one or more pointers to null-terminated
8958f0484fSRodney W. Grimesstrings that represent the argument list available to the executed program.
9058f0484fSRodney W. GrimesThe first argument, by convention, should point to the file name associated
9158f0484fSRodney W. Grimeswith the file being executed.
9258f0484fSRodney W. GrimesThe list of arguments
9358f0484fSRodney W. Grimes.Em must
9458f0484fSRodney W. Grimesbe terminated by a
9558f0484fSRodney W. Grimes.Dv NULL
9658f0484fSRodney W. Grimespointer.
9758f0484fSRodney W. Grimes.Pp
9858f0484fSRodney W. GrimesThe
9958f0484fSRodney W. Grimes.Fn exect ,
10058f0484fSRodney W. Grimes.Fn execv ,
10109f49aabSGordon Tetlow.Fn execvp ,
1028ccd0b87SBrooks Davis.Fn execvpe ,
10358f0484fSRodney W. Grimesand
10409f49aabSGordon Tetlow.Fn execvP
10558f0484fSRodney W. Grimesfunctions provide an array of pointers to null-terminated strings that
10658f0484fSRodney W. Grimesrepresent the argument list available to the new program.
10758f0484fSRodney W. GrimesThe first argument, by convention, should point to the file name associated
108dae32f31SDima Dorfmanwith the file being executed.
10958f0484fSRodney W. GrimesThe array of pointers
11058f0484fSRodney W. Grimes.Sy must
11158f0484fSRodney W. Grimesbe terminated by a
11258f0484fSRodney W. Grimes.Dv NULL
11358f0484fSRodney W. Grimespointer.
11458f0484fSRodney W. Grimes.Pp
11558f0484fSRodney W. GrimesThe
1168ccd0b87SBrooks Davis.Fn execle ,
1178ccd0b87SBrooks Davis.Fn exect ,
118947aa542SDavid Xuand
1198ccd0b87SBrooks Davis.Fn execvpe
12058f0484fSRodney W. Grimesfunctions also specify the environment of the executed process by following
12158f0484fSRodney W. Grimesthe
12258f0484fSRodney W. Grimes.Dv NULL
1232efeeba5SRuslan Ermilovpointer that terminates the list of arguments in the argument list
1242efeeba5SRuslan Ermilovor the pointer to the argv array with an additional argument.
1252efeeba5SRuslan ErmilovThis additional argument is an array of pointers to null-terminated strings
12658f0484fSRodney W. Grimesand
12758f0484fSRodney W. Grimes.Em must
12858f0484fSRodney W. Grimesbe terminated by a
12958f0484fSRodney W. Grimes.Dv NULL
13058f0484fSRodney W. Grimespointer.
13158f0484fSRodney W. GrimesThe other functions take the environment for the new process image from the
13258f0484fSRodney W. Grimesexternal variable
13358f0484fSRodney W. Grimes.Va environ
13458f0484fSRodney W. Grimesin the current process.
13558f0484fSRodney W. Grimes.Pp
13658f0484fSRodney W. GrimesSome of these functions have special semantics.
13758f0484fSRodney W. Grimes.Pp
13858f0484fSRodney W. GrimesThe functions
13909f49aabSGordon Tetlow.Fn execlp ,
14009f49aabSGordon Tetlow.Fn execvp ,
1418ccd0b87SBrooks Davis.Fn execvpe ,
14258f0484fSRodney W. Grimesand
14309f49aabSGordon Tetlow.Fn execvP
14458f0484fSRodney W. Grimeswill duplicate the actions of the shell in searching for an executable file
14558f0484fSRodney W. Grimesif the specified file name does not contain a slash
14658f0484fSRodney W. Grimes.Dq Li /
14758f0484fSRodney W. Grimescharacter.
14809f49aabSGordon TetlowFor
14909f49aabSGordon Tetlow.Fn execlp
15009f49aabSGordon Tetlowand
15109f49aabSGordon Tetlow.Fn execvp ,
1528ccd0b87SBrooks Davis.Fn execvpe ,
15309f49aabSGordon Tetlowsearch path is the path specified in the environment by
15458f0484fSRodney W. Grimes.Dq Ev PATH
15558f0484fSRodney W. Grimesvariable.
1560227791bSRuslan ErmilovIf this variable is not specified,
157cc5966e5SJeroen Ruigrok van der Werventhe default path is set according to the
158cc5966e5SJeroen Ruigrok van der Werven.Dv _PATH_DEFPATH
159cc5966e5SJeroen Ruigrok van der Wervendefinition in
160743d5d51SRuslan Ermilov.In paths.h ,
161cc5966e5SJeroen Ruigrok van der Wervenwhich is set to
16243d53dbaSJilles Tjoelker.Dq Ev /sbin:/bin:/usr/sbin:/usr/bin:/usr/local/sbin:/usr/local/bin .
16309f49aabSGordon TetlowFor
16409f49aabSGordon Tetlow.Fn execvP ,
16509f49aabSGordon Tetlowthe search path is specified as an argument to the function.
16658f0484fSRodney W. GrimesIn addition, certain errors are treated specially.
16758f0484fSRodney W. Grimes.Pp
1681df595f2SBruce EvansIf an error is ambiguous (for simplicity, we shall consider all
1691df595f2SBruce Evanserrors except
1701df595f2SBruce Evans.Er ENOEXEC
1711df595f2SBruce Evansas being ambiguous here, although only the critical error
1721df595f2SBruce Evans.Er EACCES
1731df595f2SBruce Evansis really ambiguous),
1741df595f2SBruce Evansthen these functions will act as if they stat the file to determine
1751df595f2SBruce Evanswhether the file exists and has suitable execute permissions.
1761df595f2SBruce EvansIf it does, they will return immediately with the global variable
1771df595f2SBruce Evans.Va errno
1781df595f2SBruce Evansrestored to the value set by
1791df595f2SBruce Evans.Fn execve .
1801df595f2SBruce EvansOtherwise, the search will be continued.
1811df595f2SBruce EvansIf the search completes without performing a successful
182064f0074SMike Pritchard.Fn execve
1831df595f2SBruce Evansor terminating due to an error,
1841df595f2SBruce Evansthese functions will return with the global variable
18558f0484fSRodney W. Grimes.Va errno
18658f0484fSRodney W. Grimesset to
1871df595f2SBruce Evans.Er EACCES
1881df595f2SBruce Evansor
1891df595f2SBruce Evans.Er ENOENT
1901df595f2SBruce Evansaccording to whether at least one file with suitable execute permissions
1911df595f2SBruce Evanswas found.
19258f0484fSRodney W. Grimes.Pp
1930227791bSRuslan ErmilovIf the header of a file is not recognized (the attempted
194064f0074SMike Pritchard.Fn execve
19558f0484fSRodney W. Grimesreturned
19658f0484fSRodney W. Grimes.Er ENOEXEC ) ,
19758f0484fSRodney W. Grimesthese functions will execute the shell with the path of
19858f0484fSRodney W. Grimesthe file as its first argument.
19958f0484fSRodney W. Grimes(If this attempt fails, no further searching is done.)
20058f0484fSRodney W. Grimes.Pp
20158f0484fSRodney W. GrimesThe function
20258f0484fSRodney W. Grimes.Fn exect
20358f0484fSRodney W. Grimesexecutes a file with the program tracing facilities enabled (see
20458f0484fSRodney W. Grimes.Xr ptrace 2 ) .
20558f0484fSRodney W. Grimes.Sh RETURN VALUES
20658f0484fSRodney W. GrimesIf any of the
207064f0074SMike Pritchard.Fn exec
20858f0484fSRodney W. Grimesfunctions returns, an error will have occurred.
20958f0484fSRodney W. GrimesThe return value is \-1, and the global variable
21058f0484fSRodney W. Grimes.Va errno
21158f0484fSRodney W. Grimeswill be set to indicate the error.
21258f0484fSRodney W. Grimes.Sh FILES
21358f0484fSRodney W. Grimes.Bl -tag -width /bin/sh -compact
21458f0484fSRodney W. Grimes.It Pa /bin/sh
21558f0484fSRodney W. GrimesThe shell.
21658f0484fSRodney W. Grimes.El
21758f0484fSRodney W. Grimes.Sh COMPATIBILITY
21858f0484fSRodney W. GrimesHistorically, the default path for the
21958f0484fSRodney W. Grimes.Fn execlp
22058f0484fSRodney W. Grimesand
22158f0484fSRodney W. Grimes.Fn execvp
22258f0484fSRodney W. Grimesfunctions was
22358f0484fSRodney W. Grimes.Dq Pa :/bin:/usr/bin .
2243c0237a6SJilles TjoelkerThis was changed to remove the current directory to enhance system
22558f0484fSRodney W. Grimessecurity.
22658f0484fSRodney W. Grimes.Pp
22758f0484fSRodney W. GrimesThe behavior of
22858f0484fSRodney W. Grimes.Fn execlp
22958f0484fSRodney W. Grimesand
23058f0484fSRodney W. Grimes.Fn execvp
2311df595f2SBruce Evanswhen errors occur while attempting to execute the file is not quite historic
2321df595f2SBruce Evanspractice, and has not traditionally been documented and is not specified
23358f0484fSRodney W. Grimesby the
23458f0484fSRodney W. Grimes.Tn POSIX
23558f0484fSRodney W. Grimesstandard.
23658f0484fSRodney W. Grimes.Pp
23758f0484fSRodney W. GrimesTraditionally, the functions
23858f0484fSRodney W. Grimes.Fn execlp
23958f0484fSRodney W. Grimesand
24058f0484fSRodney W. Grimes.Fn execvp
24158f0484fSRodney W. Grimesignored all errors except for the ones described above and
2421df595f2SBruce Evans.Er ETXTBSY ,
2431df595f2SBruce Evansupon which they retried after sleeping for several seconds, and
24458f0484fSRodney W. Grimes.Er ENOMEM
24558f0484fSRodney W. Grimesand
24658f0484fSRodney W. Grimes.Er E2BIG ,
24758f0484fSRodney W. Grimesupon which they returned.
2481df595f2SBruce EvansThey now return for
2491df595f2SBruce Evans.Er ETXTBSY ,
2501df595f2SBruce Evansand determine existence and executability more carefully.
2511df595f2SBruce EvansIn particular,
2521df595f2SBruce Evans.Er EACCES
2531df595f2SBruce Evansfor inaccessible directories in the path prefix is no longer
2541df595f2SBruce Evansconfused with
2551df595f2SBruce Evans.Er EACCES
2561df595f2SBruce Evansfor files with unsuitable execute permissions.
2571df595f2SBruce EvansIn
2581df595f2SBruce Evans.Bx 4.4 ,
2591df595f2SBruce Evansthey returned upon all errors except
2601df595f2SBruce Evans.Er EACCES ,
2611df595f2SBruce Evans.Er ENOENT ,
2621df595f2SBruce Evans.Er ENOEXEC
2631df595f2SBruce Evansand
2641df595f2SBruce Evans.Er ETXTBSY .
2651df595f2SBruce EvansThis was inferior to the traditional error handling,
266a910f192SDima Dorfmansince it breaks the ignoring of errors for path prefixes
2671df595f2SBruce Evansand only improves the handling of the unusual ambiguous error
2681df595f2SBruce Evans.Er EFAULT
2691df595f2SBruce Evansand the unusual error
2701df595f2SBruce Evans.Er EIO .
2711df595f2SBruce EvansThe behaviour was changed to match the behaviour of
2721df595f2SBruce Evans.Xr sh 1 .
27324a0682cSRuslan Ermilov.Sh ERRORS
27424a0682cSRuslan ErmilovThe
27524a0682cSRuslan Ermilov.Fn execl ,
27624a0682cSRuslan Ermilov.Fn execle ,
27724a0682cSRuslan Ermilov.Fn execlp ,
2788ccd0b87SBrooks Davis.Fn execvp ,
2798ccd0b87SBrooks Davis.Fn execvpe ,
28024a0682cSRuslan Ermilovand
28124a0682cSRuslan Ermilov.Fn execvP
28224a0682cSRuslan Ermilovfunctions
28324a0682cSRuslan Ermilovmay fail and set
28424a0682cSRuslan Ermilov.Va errno
28524a0682cSRuslan Ermilovfor any of the errors specified for the library functions
28624a0682cSRuslan Ermilov.Xr execve 2
28724a0682cSRuslan Ermilovand
28824a0682cSRuslan Ermilov.Xr malloc 3 .
28924a0682cSRuslan Ermilov.Pp
29024a0682cSRuslan ErmilovThe
29124a0682cSRuslan Ermilov.Fn exect
29224a0682cSRuslan Ermilovand
29324a0682cSRuslan Ermilov.Fn execv
29424a0682cSRuslan Ermilovfunctions
29524a0682cSRuslan Ermilovmay fail and set
29624a0682cSRuslan Ermilov.Va errno
29724a0682cSRuslan Ermilovfor any of the errors specified for the library function
29824a0682cSRuslan Ermilov.Xr execve 2 .
29924a0682cSRuslan Ermilov.Sh SEE ALSO
30024a0682cSRuslan Ermilov.Xr sh 1 ,
30124a0682cSRuslan Ermilov.Xr execve 2 ,
30224a0682cSRuslan Ermilov.Xr fork 2 ,
30324a0682cSRuslan Ermilov.Xr ktrace 2 ,
30424a0682cSRuslan Ermilov.Xr ptrace 2 ,
30524a0682cSRuslan Ermilov.Xr environ 7
30658f0484fSRodney W. Grimes.Sh STANDARDS
30795f4226bSRuslan ErmilovThe
30895f4226bSRuslan Ermilov.Fn execl ,
30958f0484fSRodney W. Grimes.Fn execv ,
31058f0484fSRodney W. Grimes.Fn execle ,
31158f0484fSRodney W. Grimes.Fn execlp
31258f0484fSRodney W. Grimesand
31358f0484fSRodney W. Grimes.Fn execvp
31495f4226bSRuslan Ermilovfunctions
31558f0484fSRodney W. Grimesconform to
31658f0484fSRodney W. Grimes.St -p1003.1-88 .
3178ccd0b87SBrooks DavisThe
3188ccd0b87SBrooks Davis.Fn execvpe
3198ccd0b87SBrooks Davisfunction is a GNU extension.
320792f4f40SSergio Carlavilla Delgado.Sh HISTORY
321792f4f40SSergio Carlavilla DelgadoThe
322792f4f40SSergio Carlavilla Delgado.Fn exec
323792f4f40SSergio Carlavilla Delgadofunction appeared in
324792f4f40SSergio Carlavilla Delgado.At v1 .
32509f49aabSGordon TetlowThe
32600c101b1SWarner Losh.Fn execl
32700c101b1SWarner Loshand
32800c101b1SWarner Losh.Fn execv
32900c101b1SWarner Loshfunctions appeared in
33000c101b1SWarner Losh.At v2 .
33100c101b1SWarner LoshThe
33256c995d6SWarner Losh.Fn execlp ,
33356c995d6SWarner Losh.Fn execle ,
33456c995d6SWarner Losh.Fn execve ,
33556c995d6SWarner Loshand
33656c995d6SWarner Losh.Fn execvp
33756c995d6SWarner Loshfunctions appeared in
33856c995d6SWarner Losh.At v7 .
33956c995d6SWarner LoshThe
34009f49aabSGordon Tetlow.Fn execvP
34109f49aabSGordon Tetlowfunction first appeared in
34209f49aabSGordon Tetlow.Fx 5.2 .
3438ccd0b87SBrooks DavisThe
3448ccd0b87SBrooks Davis.Fn execvpe
3458ccd0b87SBrooks Davisfunction first appeared in
346*2ce32ab2STom Hukins.Fx 14.1 .
347337bd627SConrad Meyer.Sh BUGS
348337bd627SConrad MeyerThe type of the
349337bd627SConrad Meyer.Fa argv
350337bd627SConrad Meyerand
351337bd627SConrad Meyer.Fa envp
352337bd627SConrad Meyerparameters to
353337bd627SConrad Meyer.Fn execle ,
354337bd627SConrad Meyer.Fn exect ,
355337bd627SConrad Meyer.Fn execv ,
356337bd627SConrad Meyer.Fn execvp ,
3578ccd0b87SBrooks Davis.Fn execvpe ,
358337bd627SConrad Meyerand
359337bd627SConrad Meyer.Fn execvP
360337bd627SConrad Meyeris a historical accident and no sane implementation should modify the provided
361337bd627SConrad Meyerstrings.
362337bd627SConrad MeyerThe bogus parameter types trigger false positives from
363337bd627SConrad Meyer.Li const
364337bd627SConrad Meyercorrectness analyzers.
365337bd627SConrad MeyerOn
366337bd627SConrad Meyer.Fx ,
367337bd627SConrad Meyerthe
368337bd627SConrad Meyer.Fn __DECONST
369337bd627SConrad Meyermacro may be used to work around this limitation.
370337bd627SConrad Meyer.Pp
371337bd627SConrad MeyerDue to a fluke of the C standard, on platforms other than
372337bd627SConrad Meyer.Fx
373337bd627SConrad Meyerthe definition of
374337bd627SConrad Meyer.Dv NULL
375337bd627SConrad Meyermay be the untyped number zero, rather than a
376337bd627SConrad Meyer.Ad (void *)0
377337bd627SConrad Meyerexpression.
378337bd627SConrad MeyerTo distinguish the concepts, they are referred to as a
379337bd627SConrad Meyer.Dq null pointer constant
380337bd627SConrad Meyerand a
381337bd627SConrad Meyer.Dq null pointer ,
382337bd627SConrad Meyerrespectively.
383337bd627SConrad MeyerOn exotic computer architectures that
384337bd627SConrad Meyer.Fx
385337bd627SConrad Meyerdoes not support, the null pointer constant and null pointer may have a
386337bd627SConrad Meyerdifferent representation.
387337bd627SConrad MeyerIn general, where this document and others reference a
388337bd627SConrad Meyer.Dv NULL
389337bd627SConrad Meyervalue, they actually imply a null pointer.
390337bd627SConrad MeyerE.g., for portability to non-FreeBSD operating systems on exotic computer
391337bd627SConrad Meyerarchitectures, one may use
392337bd627SConrad Meyer.Li (char *)NULL
393337bd627SConrad Meyerin place of
394337bd627SConrad Meyer.Dv NULL
395337bd627SConrad Meyerwhen invoking
396337bd627SConrad Meyer.Fn execl ,
397337bd627SConrad Meyer.Fn execle ,
398337bd627SConrad Meyerand
399337bd627SConrad Meyer.Fn execlp .
400