.\" .\" Copyright (c) 1992 The Regents of the University of California .\" Copyright (c) 1990, 1992 Jan-Simon Pendry .\" All rights reserved. .\" .\" This code is derived from software donated to Berkeley by .\" Jan-Simon Pendry. .\" .\" %sccs.include.redist.roff% .\" .\" @(#)mount_fdesc.8 5.3 (Berkeley) 05/28/93 .\" .\" .Dd .Dt MOUNT_FDESC 8 .Os BSD 4.4 .Sh NAME .Nm mount_fdesc .Nd mount the file-descriptor file system .Sh SYNOPSIS .Nm mount_fdesc .Op Fl F Ar fsoptions .Pa fdesc .Pa mount_point .Sh DESCRIPTION The .Nm mount_fdesc command attaches an instance of the per-process file descriptor namespace to the global filesystem namespace. The conventional mount point is .Pa /dev and the filesystem should be union mounted in order to augment, rather than replace, the existing entries in .Pa /dev . This command is normally executed by .Xr mount 8 at boot time. .Pp The contents of the mount point are .Pa fd , .Pa stderr , .Pa stdin , .Pa stdout and .Pa tty . .Pp .Pa 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 .Pa /dev/fd/0 through .Pa /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: .Bd -literal -offset indent fd = open("/dev/fd/0", mode); .Ed .Pp and the call: .Bd -literal -offset indent fd = fcntl(0, F_DUPFD, 0); .Ed .Pp are equivalent. .Pp The files .Pa /dev/stdin , .Pa /dev/stdout and .Pa /dev/stderr appear as symlinks to the relevant entry in the .Pa /dev/fd sub-directory. Opening them is equivalent to the following calls: .Bd -literal -offset indent fd = fcntl(STDIN_FILENO, F_DUPFD, 0); fd = fcntl(STDOUT_FILENO, F_DUPFD, 0); fd = fcntl(STDERR_FILENO, F_DUPFD, 0); .Ed .Pp Flags to the .Xr open 2 call other than .Dv O_RDONLY , .Dv O_WRONLY and .Dv O_RDWR are ignored. .Pp The .Pa /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. .Sh FILES .Bl -tag -width /dev/stderr -compact .It Pa /dev/fd/# .It Pa /dev/stdin .It Pa /dev/stdout .It Pa /dev/stderr .It Pa /dev/tty .El .Sh SEE ALSO .Xr mount 2 , .Xr unmount 2 , .Xr tty 4 , .Xr fstab 5 .Sh CAVEATS No .Pa . and .Pa .. entries appear when listing the contents of the .Pa /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 .Pa . and .Pa .. in a pathname. .Pp This filesystem may not be NFS-exported. .Sh HISTORY The .Nm descriptor filesystem is .Ud