---
name: "mount_fdesc"
section: "8"
platform: "macos"
package: "diskdev_cmds"
version: "757"
release: "macOS 26.5"
platforms: ["macos"]
url: "https://new.carta.tech/mount_fdesc"
---

# mount\_fdesc(8)

mount the file-descriptor file system

## NAME

**mount\_fdesc** – mount the file-descriptor file system

## SYNOPSIS

**mount\_fdesc** \[**-o** *options*\] *fdesc* *mount\_point*

## DESCRIPTION

The **mount\_fdesc** command attaches an instance of the per-process file descriptor namespace to the global filesystem namespace. The conventional mount point is */dev* and the filesystem should be union mounted in order to augment, rather than replace, the existing entries in */dev*. This command is normally executed by [mount(8)](/mount/8.md) at boot time.

The options are as follows:

- **-o**

  Options are specified with a **-o** flag followed by a comma separated string of options. See the [mount(8)](/mount/8.md) man page for possible options and their meanings.

The contents of the mount point are *fd*, *stderr*, *stdin*, *stdout* and *tty*.

*fd* is a directory whose contents appear as a list of numbered files which correspond to the open files of the process reading the directory. 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.

The files */dev/stdin*, */dev/stdout* and */dev/stderr* appear as symlinks to the relevant entry in the */dev/fd* sub-directory. Opening them 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.

The */dev/tty* entry is an indirect reference to the current process's controlling terminal. It appears as a named pipe (FIFO) but behaves in exactly the same way as the real controlling terminal device.

## FILES

- */dev/fd/#*

  - */dev/stdin*

  - */dev/stdout*

  - */dev/stderr*

  - */dev/tty*

  ## SEE ALSO

[mount(2)](/mount/2.md), [unmount(2)](/unmount/2.md), [tty(4)](/tty/4.md), [fstab(5)](/fstab/5.md), [mount(8)](/mount/8.md)

## CAVEATS

No. and *..* entries appear when listing the contents of the */dev/fd* directory. This makes sense in the context of this filesystem, but is inconsistent with usual filesystem conventions. However, it is still possible to refer to both. and  *..* in a pathname.

This filesystem may not be NFS-exported.

## HISTORY

The **mount\_fdesc** utility first appeared in 4.4BSD.
