1.\"
2.\" Copyright (c) 1992 The Regents of the University of California
3.\" Copyright (c) 1990, 1992 Jan-Simon Pendry
4.\" All rights reserved.
5.\"
6.\" This code is derived from software donated to Berkeley by
7.\" Jan-Simon Pendry.
8.\"
9.\" %sccs.include.redist.roff%
10.\"
11.\"	@(#)mount_fdesc.8	5.3 (Berkeley) 05/28/93
12.\"
13.\"
14.Dd
15.Dt MOUNT_FDESC 8
16.Os BSD 4.4
17.Sh NAME
18.Nm mount_fdesc
19.Nd mount the file-descriptor file system
20.Sh SYNOPSIS
21.Nm mount_fdesc
22.Op Fl F Ar fsoptions
23.Pa fdesc
24.Pa mount_point
25.Sh DESCRIPTION
26The
27.Nm mount_fdesc
28command attaches an instance of the per-process file descriptor
29namespace to the global filesystem namespace.
30The conventional mount point is
31.Pa /dev
32and the filesystem should be union mounted in order to augment,
33rather than replace, the existing entries in
34.Pa /dev .
35This command is normally executed by
36.Xr mount 8
37at boot time.
38.Pp
39The contents of the mount point are
40.Pa fd ,
41.Pa stderr ,
42.Pa stdin ,
43.Pa stdout
44and
45.Pa tty .
46.Pp
47.Pa fd
48is a directory whose contents
49appear as a list of numbered files
50which correspond to the open files of the process reading the
51directory.
52The files
53.Pa /dev/fd/0
54through
55.Pa /dev/fd/#
56refer to file descriptors which can be accessed through the file
57system.
58If the file descriptor is open and the mode the file is being opened
59with is a subset of the mode of the existing descriptor, the call:
60.Bd -literal -offset indent
61fd = open("/dev/fd/0", mode);
62.Ed
63.Pp
64and the call:
65.Bd -literal -offset indent
66fd = fcntl(0, F_DUPFD, 0);
67.Ed
68.Pp
69are equivalent.
70.Pp
71The files
72.Pa /dev/stdin ,
73.Pa /dev/stdout
74and
75.Pa /dev/stderr
76appear as symlinks to the relevant entry in the
77.Pa /dev/fd
78sub-directory.
79Opening them is equivalent to the following calls:
80.Bd -literal -offset indent
81fd = fcntl(STDIN_FILENO,  F_DUPFD, 0);
82fd = fcntl(STDOUT_FILENO, F_DUPFD, 0);
83fd = fcntl(STDERR_FILENO, F_DUPFD, 0);
84.Ed
85.Pp
86Flags to the
87.Xr open 2
88call other than
89.Dv O_RDONLY ,
90.Dv O_WRONLY
91and
92.Dv O_RDWR
93are ignored.
94.Pp
95The
96.Pa /dev/tty
97entry is an indirect reference to the current process's controlling terminal.
98It appears as a named pipe (FIFO) but behaves in exactly the same way as
99the real controlling terminal device.
100.Sh FILES
101.Bl -tag -width /dev/stderr -compact
102.It Pa /dev/fd/#
103.It Pa /dev/stdin
104.It Pa /dev/stdout
105.It Pa /dev/stderr
106.It Pa /dev/tty
107.El
108.Sh SEE ALSO
109.Xr mount 2 ,
110.Xr unmount 2 ,
111.Xr tty 4 ,
112.Xr fstab 5
113.Sh CAVEATS
114No
115.Pa .
116and
117.Pa ..
118entries appear when listing the contents of the
119.Pa /dev/fd
120directory.
121This makes sense in the context of this filesystem, but is inconsistent
122with usual filesystem conventions.
123However, it is still possible to refer to both
124.Pa .
125and
126.Pa ..
127in a pathname.
128.Pp
129This filesystem may not be NFS-exported.
130.Sh HISTORY
131The
132.Nm
133descriptor filesystem
134is
135.Ud
136