Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages


home | help
FDESCFS(5)		  FreeBSD File Formats Manual		    FDESCFS(5)

     fdescfs --	file-descriptor	file system

     fdescfs /dev/fd fdescfs rw	0 0

     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 cor-
     respond 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 refer-
	       enced vnode.  See below for more	details.

     linrdlnk  Report the type of the fdescfs vnode as VLNK instead of FreeBSD
	       traditional VCHR.  For linux(4) ABI compatibility mount fdescfs
	       volume with the linrdlnk	option.

     For fdescfs mounted without the nodup mount option, if the	file descrip-
     tor 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 referenc-
     ing 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	de-
     scriptors opened by the process.


     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

     devfs(5), mount(8)

     The fdescfs file system first appeared in 4.4BSD.	The fdescfs manual
     page first	appeared in FreeBSD 2.2.

     The fdescfs manual	page was written by Mike Pritchard <>,
     and was based on the manual page written by Jan-Simon Pendry.

FreeBSD	13.0			 May 17, 2021			  FreeBSD 13.0


Want to link to this manual page? Use this URL:

home | help