fexecve man page on Archlinux

Man page or keyword search:  
man Server   11224 pages
apropos Keyword Search (all sections)
Output format
Archlinux logo
[printable version]

FEXECVE(3)		   Linux Programmer's Manual		    FEXECVE(3)

       fexecve - execute program specified via file descriptor

       #include <unistd.h>

       int fexecve(int fd, char *const argv[], char *const envp[]);

   Feature Test Macro Requirements for glibc (see feature_test_macros(7)):

	   Since glibc 2.10:
	       _XOPEN_SOURCE >= 700 || _POSIX_C_SOURCE >= 200809L
	   Before glibc 2.10:

       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

       A  successful  call to fexecve() never returns.	On error, the function
       does return, with a result value of -1, and errno is set appropriately.

       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

       ENOSYS The /proc filesystem could not be accessed.

       fexecve() is implemented since glibc 2.3.2.

       POSIX.1-2008.   This  function is not specified in POSIX.1-2001, and is
       not  widely  available  on  other  systems.    It   is	specified   in

       On  Linux,  fexecve()  is  implemented using the proc(5) filesystem, so
       /proc needs to be mounted and available at the time of the call.

       If fd is a file descriptor that refers to an interpreter script and has
       been  marked  as close-on-exec (see the discussion of the FD_CLOEXEC in
       fcntl(2)), fexecve() will fail to execute the  script,  since,  by  the
       time  the  script  interpreter  tries to access the script file, fd has
       already been closed.

       The idea behind fexecve() is to allow the caller to  verify  (checksum)
       the  contents of an executable before executing it.  Simply opening the
       file, checksumming the contents, and then doing an execve(2) would  not
       suffice,	 since,	 between  the  two steps, the filename, or a directory
       prefix of the pathname, could have been	exchanged  (by,	 for  example,
       modifying  the target of a symbolic link).  fexecve() does not mitigate
       the problem that the contents of a file could be	 changed  between  the
       checksumming  and  the  call to fexecve(); for that, the solution is to
       ensure that the permissions on the file prevent it from being  modified
       by malicious users.


       This  page  is  part of release 3.65 of the Linux man-pages project.  A
       description of the project, and information about reporting  bugs,  can
       be found at http://www.kernel.org/doc/man-pages/.

Linux				  2014-04-20			    FEXECVE(3)

List of man pages available for Archlinux

Copyright (c) for man pages and the logo by the respective OS vendor.

For those who want to learn more, the polarhome community provides shell access and support.

[legal] [privacy] [GNU] [policy] [cookies] [netiquette] [sponsors] [FAQ]
Polarhome, production since 1999.
Member of Polarhome portal.
Based on Fawad Halim's script.
Vote for polarhome
Free Shell Accounts :: the biggest list on the net