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

FreeBSD Manual Pages

  
 
  

home | help
FDESCFS(4)		     Kernel Interfaces Manual		      FDESCFS(4)

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  corre-
     spond  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 as VLNK instead  of  FreeBSD
	       traditional  VCHR.   For linux(4) ABI compatibility mount fdescfs
	       volume with the linrdlnk option.

     rdlnk     Treat fdescfs vnodes as symbolic links consistently, in	particu-
	       lar,  follow the resolved name for the name lookups.  This option
	       is strictly stronger than the linrdlnk  option,	it  changes  not
	       only  the  type	returned by stat(2), but also causes the fdescfs
	       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
     devfs(4), mount(8)

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.

FreeBSD ports 15.1		  Jul 11, 2023			      FDESCFS(4)

Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=fdescfs&sektion=4&manpath=FreeBSD+15.1-RELEASE+and+Ports>

home | help