NAME
ttyname
,
ttyname_r
, isatty
,
ttyslot
—
get name of associated terminal (tty)
from file descriptor
LIBRARY
library “libc”
SYNOPSIS
#include
<unistd.h>
char *
ttyname
(int
fd);
int
ttyname_r
(int
fd, char *buf,
size_t len);
int
isatty
(int
fd);
int
ttyslot
(void);
DESCRIPTION
These functions operate on the system file descriptors for terminal type devices. These descriptors are not related to the standard I/OFILE
typedef, but refer to the special device files
found in /dev and named
/dev/ttyxx and for which an
entry exists in the initialization file /etc/ttys.
(See ttys(5).)
The
isatty
()
function determines if the file descriptor fd refers
to a valid terminal type device.
The
ttyname
()
function gets the related device name of a file descriptor for which
isatty
() is true.
The
ttyname
()
function returns the name stored in a static buffer which will be
overwritten on subsequent calls. The
ttyname_r
()
function takes a buffer and length as arguments to avoid this problem.
The
ttyslot
()
function fetches the current process' control terminal number from the
ttys(5) file entry.
RETURN VALUES
The isatty
() function returns 1 if the
file descriptor refers to a valid terminal device and 0 otherwise.
The ttyname
() function returns the null
terminated name if the device is found and isatty
()
is true; otherwise a NULL
pointer is returned. The
ttyname_r
() function returns 0 if successful.
Otherwise an error number is returned.
The ttyslot
() function returns the unit
number of the device file if found; otherwise the value zero is
returned.
FILES
- /dev/∗
- /etc/ttys
ERRORS
The ttyname
(),
ttyname_r
(), and isatty
()
functions may fail and return the following error codes:
- [
EBADF
] - The fd is not a valid open file descriptor.
- [
ENOTTY
] - The fd is not associated with a terminal.
- [
ERANGE
] - The bufsize argument is smaller than the length of the string to be returned.
SEE ALSO
HISTORY
The isatty
(),
ttyname
(), and ttyslot
()
functions appeared in Version 7 AT&T
UNIX. The ttyname_r
() function appeared in
FreeBSD 6.0.