F_GETFD, F_SETFD − get/set file descriptor flags
Standard C library (libc, −lc)
#include <fcntl.h>
int
fcntl(int fd, F_GETFD);
int fcntl(int fd, F_SETFD, int
arg);
These operations
manipulate the flags associated with a file descriptor.
Currently, only one such flag is defined: FD_CLOEXEC,
the close-on-exec flag. If the FD_CLOEXEC bit is set,
the file descriptor will automatically be closed during a
successful execve(2). (If the execve(2) fails,
the file descriptor is left open.) If the FD_CLOEXEC
bit is not set, the file descriptor will remain open across
an execve(2).
F_GETFD
Return (as the function result) the file descriptor flags; arg is ignored.
F_SETFD
Set the file descriptor flags to the value specified by arg.
F_GETFD
Value of file descriptor flags.
F_SETFD
Zero.
On error, −1 is returned, and errno is set to indicate the error.
See fcntl(2).
POSIX.1-2024.
SVr4, 4.3BSD, POSIX.1-2001.
In multithreaded programs, using fcntl(2) F_SETFD to set the close-on-exec flag at the same time as another thread performs a fork(2) plus execve(2) is vulnerable to a race condition that may unintentionally leak the file descriptor to the program executed in the child process. See the discussion of the O_CLOEXEC flag in open(2) for details and a remedy to the problem.
fcntl(2)