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