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/tty
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();
and
ttyname_r();
functions get the related device name of a file descriptor for which
isatty();
is true.
The
ttyname_r();
function stores the NUL-terminated
pathname of the terminal associated with
the file descriptor
fd
in the character array referenced by
name.
The array is
namesize
characters long and should have space for the name and the terminating
NUL character.
The maximum length of the terminal name is
TTY_NAME_MAX.
The
ttyslot();
function fetches the current process's control terminal number from the
ttys(5)
file entry.
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();
function returns zero if successful; otherwise an error number is returned.
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.
[ERANGE]
The value of
namesize
is smaller than the length of the string to be returned including the
terminating NUL character.
The
isatty();,
ttyname();,
and
ttyslot();
functions appeared in
Version 7 AT&T UNIX.
The
ttyname_r();
function appeared in the POSIX Threads Extension (1003.1c-1995).
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.