---
name: "F_GETFD"
section: "2const"
platform: "linux"
package: "man-pages"
version: "6.19-1"
release: "Arch Linux 2026-11-01"
platforms: ["linux"]
url: "https://new.carta.tech/F_GETFD"
---

# F\_GETFD(2const)

get/set file descriptor flags

## NAME

F\_GETFD, F\_SETFD - get/set file descriptor flags

## LIBRARY

Standard C library (*libc*, *-lc*)

## SYNOPSIS

```
#include <fcntl.h>
```

**int fcntl(int** *fd***, F\_GETFD);** **int fcntl(int** *fd***, F\_SETFD, int** *arg***);**

## DESCRIPTION

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)](/execve/2.md). (If the [**execve**(2)](/execve/2.md) 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)](/execve/2.md).

- **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*.

## RETURN VALUE

- **F\_GETFD**

  Value of file descriptor flags.

- **F\_SETFD**

  Zero.

On error, -1 is returned, and *errno* is set to indicate the error.

## ERRORS

See [**fcntl**(2)](/fcntl/2.md).

## STANDARDS

POSIX.1-2024.

## HISTORY

SVr4, 4.3BSD, POSIX.1-1988.

## CAVEATS

In multithreaded programs, using [**fcntl**(2)](/fcntl/2.md) **F\_SETFD** to set the close-on-exec flag at the same time as another thread performs a [**fork**(2)](/fork/2.md) plus [**execve**(2)](/execve/2.md) 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)](/open/2.md) for details and a remedy to the problem.

## SEE ALSO

[**fcntl**(2)](/fcntl/2.md)
