---
name: "stdin"
section: "4freebsd"
platform: "linux"
package: "freebsd-manpages"
version: "12.2-2"
release: "Debian 13 (Trixie)"
platforms: ["linux"]
url: "https://new.carta.tech/fd/4freebsd"
---

# stdin(4freebsd)

file descriptor files

Part of [fd(4freebsd)](/fd/4freebsd.md).

## NAME

**fd**, **stdin**, **stdout**, **stderr** – file descriptor files

## DESCRIPTION

The files */dev/fd/0* through */dev/fd/#* refer to file descriptors which can be accessed through the file system. If the file descriptor is open and the mode the file is being opened with is a subset of the mode of the existing descriptor, the call:

```
fd = open("/dev/fd/0", mode);
```

and the call:

```
fd = fcntl(0, F_DUPFD, 0);
```

are equivalent.

Opening the files */dev/stdin*, */dev/stdout* and */dev/stderr* is equivalent to the following calls:

```
fd = fcntl(STDIN_FILENO,  F_DUPFD, 0);
fd = fcntl(STDOUT_FILENO, F_DUPFD, 0);
fd = fcntl(STDERR_FILENO, F_DUPFD, 0);
```

Flags to the [open(2)](/open/2.md) call other than O\_RDONLY, O\_WRONLY and O\_RDWR are ignored.

## IMPLEMENTATION NOTES

By default, */dev/fd* is provided by devfs(5), which provides nodes for the first three file descriptors. Some sites may require nodes for additional file descriptors; these can be made available by mounting fdescfs(5) on */dev/fd*.

## FILES

- */dev/fd/#*

  - */dev/stdin*

  - */dev/stdout*

  - */dev/stderr*

  ## SEE ALSO

[tty(4)](/tty/4.md), devfs(5), fdescfs(5)
