NAME
fdescfs
—
file-descriptor file system
SYNOPSIS
fdescfs /dev/fd fdescfs rw 0 0
DESCRIPTION
The file-descriptor file system, or
fdescfs
, provides access to the per-process file
descriptor namespace in the global file system namespace. The conventional
mount point is /dev/fd.
The file system's 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.
The following mount options can be used when mounting
fdescfs
filesystem:
nodup
- For file descriptors referencing vnodes, instead of the dup(2) semantic described above, implement re-opening of the referenced vnode. See below for more details.
linrdlnk
- Report the type of the
fdescfs
vnode asVLNK
instead of FreeBSD traditionalVCHR
. For linux(4) ABI compatibility mountfdescfs
volume with thelinrdlnk
option. rdlnk
- Treat
fdescfs
vnodes as symbolic links consistently, in particular, follow the resolved name for the name lookups. This option is strictly stronger than thelinrdlnk
option, it changes not only the type returned by stat(2), but also causes thefdescfs
files to behave as symlinks.
For fdescfs
mounted without the
nodup
mount option, 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. Flags to the
open(2) call other than O_RDONLY
,
O_WRONLY
and O_RDWR
are
ignored.
For fdescfs
mounted with the
nodup
option, and file descriptor referencing a
vnode, the call:
fd = open("/dev/fd/0", mode);
reopens the referenced vnode with the specified
mode. In other words, the
open
() call
above is equivalent to
fd = openat(0, "", O_EMPTY_PATH, mode);
In particular, if the file descriptor was opened with
the O_PATH
flag, then either
O_EMPTY_PATH
or
open
() over
fdescfs
mount with nodup
option allows one to convert it to a regularly opened file, assuming that
the current permissions allow the requested mode.
Note:
/dev/fd/0, /dev/fd/1 and
/dev/fd/2 files are created by default when devfs
alone is mounted. fdescfs
creates entries for all
file descriptors opened by the process.
FILES
- /dev/fd/#
EXAMPLES
To mount a fdescfs
volume located on
/dev/fd:
mount -t fdescfs none
/dev/fd
For linux(4) ABI compatibility:
mount -t fdescfs -o linrdlnk none
/compat/linux/dev/fd
For substitute of O_EMPTY_PATH
flag
use:
mount -t fdescfs -o nodup none
/dev/fdpath
SEE ALSO
HISTORY
The fdescfs
file system first appeared in
4.4BSD. The fdescfs
manual
page first appeared in FreeBSD 2.2.
AUTHORS
The fdescfs
manual page was written by
Mike Pritchard
<mpp@FreeBSD.org>, and
was based on the manual page written by Jan-Simon
Pendry.