NAME
ttyname,
ttyname_r,
isatty,
ttyslot —
get name of associated terminal (tty) from file
descriptor
LIBRARY
Standard C Library (libc, -lc)
SYNOPSIS
#include <unistd.h>
char *
ttyname(
int
fd);
int
ttyname_r(
int
fd,
char *buf,
size_t len);
int
isatty(
int
fd);
#include <stdlib.h>
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/O
FILE
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)), or for pseudo-terminal
devices created in ptyfs and named
/dev/pts/n.
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_r() is the reentrant version of the above, and it
places the results in
buf. If there is not enough space
to place the results (indicated by
len), then it returns
an error.
The
ttyslot() function fetches the current process' control
terminal number from the
ttys(5)
file entry. If the terminal is a pseudo-terminal, and there is no special
entry in the
ttys(5) file for it,
the slot number returned is 1 + (last slot number) + minor(tty). This will
return a consistent and unique number for each pseudo-terminal device without
requiring one to enumerate all of them in
ttys(5).
IMPLEMENTATION NOTES
As an optimisation, these functions attempt to obtain information about all
devices from the
/var/run/dev.cdb database, if it exists. If
the database exists but is out of date, then these functions may produce
incorrect results. The database should be updated using the
dev_mkdb(8) command.
RETURN VALUES
The
ttyname() function returns the NUL-terminated name if the
device is found and
isatty() is true; otherwise a
NULL
pointer is returned and
errno is set to indicate the error.
The
ttyname_r() functions returns 0 on success and an error
code on failure.
The
isatty() function returns 1 if
fd is
associated with a terminal device; otherwise it returns 0 and
errno is set to indicate the error.
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 will fail if:
-
-
- [
EBADF
]
- The fd argument is not a valid file
descriptor.
-
-
- [
ENOTTY
]
- The fd argument does not refer to a
terminal device.
The
ttyname_r() function will also fail if:
-
-
- [
ENOENT
]
- The terminal device is not found. This can happen if the
device node has been removed after it was opened.
-
-
- [
ERANGE
]
- The buffer provided is not large enough to fit the
result.
SEE ALSO
ioctl(2),
ttys(5),
dev_mkdb(8)
STANDARDS
The
ttyname() and
isatty() functions conform
to
IEEE Std 1003.1-1990 (“POSIX.1”).
HISTORY
isatty(),
ttyname(), and
ttyslot() functions appeared in
Version 7 AT&T UNIX.
BUGS
The
ttyname() function leaves its result in an internal static
object and returns a pointer to that object. Subsequent calls to
ttyname() will modify the same object.