1.\" Copyright (c) 1991, 1993 2.\" The Regents of the University of California. All rights reserved. 3.\" 4.\" Redistribution and use in source and binary forms, with or without 5.\" modification, are permitted provided that the following conditions 6.\" are met: 7.\" 1. Redistributions of source code must retain the above copyright 8.\" notice, this list of conditions and the following disclaimer. 9.\" 2. Redistributions in binary form must reproduce the above copyright 10.\" notice, this list of conditions and the following disclaimer in the 11.\" documentation and/or other materials provided with the distribution. 12.\" 4. Neither the name of the University nor the names of its contributors 13.\" may be used to endorse or promote products derived from this software 14.\" without specific prior written permission. 15.\" 16.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND 17.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 18.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 19.\" ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE 20.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 21.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 22.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 23.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 24.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 25.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 26.\" SUCH DAMAGE. 27.\" 28.\" @(#)ttyname.3 8.1 (Berkeley) 6/4/93 29.\" $FreeBSD$ 30.\" 31.Dd May 14, 2005 32.Dt TTYNAME 3 33.Os 34.Sh NAME 35.Nm ttyname , 36.Nm ttyname_r , 37.Nm isatty , 38.Nm ttyslot 39.Nd get name of associated terminal (tty) from file descriptor 40.Sh LIBRARY 41.Lb libc 42.Sh SYNOPSIS 43.In unistd.h 44.Ft char * 45.Fn ttyname "int fd" 46.Ft int 47.Fn ttyname_r "int fd" "char *buf" "size_t len" 48.Ft int 49.Fn isatty "int fd" 50.Ft int 51.Fn ttyslot void 52.Sh DESCRIPTION 53These functions operate on the system file descriptors for terminal 54type devices. 55These descriptors are not related to the standard 56.Tn I/O 57.Dv FILE 58typedef, but refer to the special device files found in 59.Pa /dev 60and named 61.Pa /dev/tty Ns Ar xx 62and for which an entry exists 63in the initialization file 64.Pa /etc/ttys . 65(See 66.Xr ttys 5 . ) 67.Pp 68The 69.Fn isatty 70function 71determines if the file descriptor 72.Fa fd 73refers to a valid 74terminal type device. 75.Pp 76The 77.Fn ttyname 78function 79gets the related device name of 80a file descriptor for which 81.Fn isatty 82is true. 83.Pp 84The 85.Fn ttyname 86function 87returns the name stored in a static buffer which will be overwritten 88on subsequent calls. 89The 90.Fn ttyname_r 91function 92takes a buffer and length as arguments to avoid this problem. 93.Pp 94The 95.Fn ttyslot 96function 97fetches the current process' control terminal number from the 98.Xr ttys 5 99file entry. 100.Sh RETURN VALUES 101The 102.Fn ttyname 103function 104returns the null terminated name if the device is found and 105.Fn isatty 106is true; otherwise 107a 108.Dv NULL 109pointer is returned. 110The 111.Fn ttyname_r 112function returns 0 if successful. 113Otherwise an error number is returned. 114.Pp 115The 116.Fn ttyslot 117function 118returns the unit number of the device file if found; otherwise 119the value zero is returned. 120.Sh FILES 121.Bl -tag -width ".Pa /etc/ttys" -compact 122.It Pa /dev/\(** 123.It Pa /etc/ttys 124.El 125.Sh ERRORS 126The 127.Fn ttyname_r 128may fail and return the following error codes: 129.Bl -tag -width Er 130.It Bq Er ENOTTY 131The 132.Fa fd 133argument 134is not a valid file descriptor. 135.It Bq Er ERANGE 136The 137.Fa bufsize 138argument 139is smaller than the length of the string to be returned. 140.El 141.Sh SEE ALSO 142.Xr ioctl 2 , 143.Xr ttys 5 144.Sh HISTORY 145The 146.Fn isatty , 147.Fn ttyname , 148and 149.Fn ttyslot 150functions 151appeared in 152.At v7 . 153The 154.Fn ttyname_r 155function 156appeared in 157.Fx 6.0 . 158