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