fexecve(3) - Linux man page
Name
fexecve - execute program specified via file descriptor
Synopsis
#include <unistd.h> int fexecve(int fd, char *const argv[], char *const envp[]);Feature Test Macro Requirements for glibc (see feature_test_macros(7)):
- fexecve():
- Since glibc 2.10:
- _XOPEN_SOURCE >= 700 || _POSIX_C_SOURCE >= 200809L
- Before glibc 2.10:
- _GNU_SOURCE
- _XOPEN_SOURCE >= 700 || _POSIX_C_SOURCE >= 200809L
Description
fexecve() performs the same task as execve(2), with the difference that the file to be executed is specified via a file descriptor, fd, rather than via a pathname. The file descriptor fd must be opened read-only, and the caller must have permission to execute the file that it refers to.
Return Value
A successful call to fexecve() never returns. On error, the function returns, with a result value of -1, and errno is set appropriately.
Errors
Errors are as for execve(2), with the following additions:
- EINVAL
fd is not a valid file descriptor, or argv is NULL, or envp is NULL.
ENOSYS
The /proc file system could not be accessed.
Versions
fexecve() is implemented since glibc 2.3.2.
Conforming To
POSIX.1-2008. This function is not specified in POSIX.1-2001, and is not widely available on other systems.
Notes
On Linux, fexecve() is implemented using the proc(5) file system, so /proc needs to be mounted and available at the time of the call.
See Also
execve(2)