diff options
Diffstat (limited to 'man2/execveat.2')
-rw-r--r-- | man2/execveat.2 | 220 |
1 files changed, 0 insertions, 220 deletions
diff --git a/man2/execveat.2 b/man2/execveat.2 deleted file mode 100644 index 3a612ae..0000000 --- a/man2/execveat.2 +++ /dev/null @@ -1,220 +0,0 @@ -.\" Copyright (c) 2014 Google, Inc., written by David Drysdale -.\" and Copyright (c) 2015, Michael Kerrisk <mtk.manpages@gmail.com> -.\" -.\" SPDX-License-Identifier: Linux-man-pages-copyleft -.\" -.TH execveat 2 2023-10-31 "Linux man-pages 6.7" -.SH NAME -execveat \- execute program relative to a directory file descriptor -.SH LIBRARY -Standard C library -.RI ( libc ", " \-lc ) -.SH SYNOPSIS -.nf -.BR "#include <linux/fcntl.h>" " /* Definition of " AT_* " constants */" -.B #include <unistd.h> -.P -.BI "int execveat(int " dirfd ", const char *" pathname , -.BI " char *const _Nullable " argv [], -.BI " char *const _Nullable " envp [], -.BI " int " flags ); -.fi -.SH DESCRIPTION -.\" commit 51f39a1f0cea1cacf8c787f652f26dfee9611874 -The -.BR execveat () -system call executes the program referred to by the combination of -.I dirfd -and -.IR pathname . -It operates in exactly the same way as -.BR execve (2), -except for the differences described in this manual page. -.P -If the pathname given in -.I pathname -is relative, then it is interpreted relative to the directory -referred to by the file descriptor -.I dirfd -(rather than relative to the current working directory of -the calling process, as is done by -.BR execve (2) -for a relative pathname). -.P -If -.I pathname -is relative and -.I dirfd -is the special value -.BR AT_FDCWD , -then -.I pathname -is interpreted relative to the current working -directory of the calling process (like -.BR execve (2)). -.P -If -.I pathname -is absolute, then -.I dirfd -is ignored. -.P -If -.I pathname -is an empty string and the -.B AT_EMPTY_PATH -flag is specified, then the file descriptor -.I dirfd -specifies the file to be executed (i.e., -.I dirfd -refers to an executable file, rather than a directory). -.P -The -.I flags -argument is a bit mask that can include zero or more of the following flags: -.TP -.B AT_EMPTY_PATH -If -.I pathname -is an empty string, operate on the file referred to by -.I dirfd -(which may have been obtained using the -.BR open (2) -.B O_PATH -flag). -.TP -.B AT_SYMLINK_NOFOLLOW -If the file identified by -.I dirfd -and a non-NULL -.I pathname -is a symbolic link, then the call fails with the error -.BR ELOOP . -.SH RETURN VALUE -On success, -.BR execveat () -does not return. -On error, \-1 is returned, and -.I errno -is set to indicate the error. -.SH ERRORS -The same errors that occur for -.BR execve (2) -can also occur for -.BR execveat (). -The following additional errors can occur for -.BR execveat (): -.TP -.I pathname -is relative but -.I dirfd -is neither -.B AT_FDCWD -nor a valid file descriptor. -.TP -.B EINVAL -Invalid flag specified in -.IR flags . -.TP -.B ELOOP -.I flags -includes -.B AT_SYMLINK_NOFOLLOW -and the file identified by -.I dirfd -and a non-NULL -.I pathname -is a symbolic link. -.TP -.B ENOENT -The program identified by -.I dirfd -and -.I pathname -requires the use of an interpreter program -(such as a script starting with "#!"), but the file descriptor -.I dirfd -was opened with the -.B O_CLOEXEC -flag, with the result that -the program file is inaccessible to the launched interpreter. -See BUGS. -.TP -.B ENOTDIR -.I pathname -is relative and -.I dirfd -is a file descriptor referring to a file other than a directory. -.SH STANDARDS -Linux. -.SH HISTORY -Linux 3.19, -glibc 2.34. -.SH NOTES -In addition to the reasons explained in -.BR openat (2), -the -.BR execveat () -system call is also needed to allow -.BR fexecve (3) -to be implemented on systems that do not have the -.I /proc -filesystem mounted. -.P -When asked to execute a script file, the -.I argv[0] -that is passed to the script interpreter is a string of the form -.I /dev/fd/N -or -.IR /dev/fd/N/P , -where -.I N -is the number of the file descriptor passed via the -.I dirfd -argument. -A string of the first form occurs when -.B AT_EMPTY_PATH -is employed. -A string of the second form occurs when the script is specified via both -.I dirfd -and -.IR pathname ; -in this case, -.I P -is the value given in -.IR pathname . -.P -For the same reasons described in -.BR fexecve (3), -the natural idiom when using -.BR execveat () -is to set the close-on-exec flag on -.IR dirfd . -(But see BUGS.) -.SH BUGS -The -.B ENOENT -error described above means that it is not possible to set the -close-on-exec flag on the file descriptor given to a call of the form: -.P -.in +4n -.EX -execveat(fd, "", argv, envp, AT_EMPTY_PATH); -.EE -.in -.P -However, the inability to set the close-on-exec flag means that a file -descriptor referring to the script leaks through to the script itself. -As well as wasting a file descriptor, -this leakage can lead to file-descriptor exhaustion in scenarios -where scripts recursively employ -.BR execveat (). -.\" For an example, see Michael Kerrisk's 2015-01-10 reply in this LKML -.\" thread (http://thread.gmane.org/gmane.linux.kernel/1836105/focus=20229): -.\" -.\" Subject: [PATCHv10 man-pages 5/5] execveat.2: initial man page.\" for execveat(2 -.\" Date: Mon, 24 Nov 2014 11:53:59 +0000 -.SH SEE ALSO -.BR execve (2), -.BR openat (2), -.BR fexecve (3) |