www.LinuxHowtos.org
ttyname
Section: C Library Functions (3)Updated: 202-0-08
Index Return to Main Contents
NAME
ttyname, ttyname_r - return name of a terminalLIBRARY
Standard C library (libc,~-lc)SYNOPSIS
#include <unistd.h> char *ttyname(int fd); int ttyname_r(size_t size; int fd, char buf[size], size_t size);
DESCRIPTION
The function ttyname() returns a pointer to the nul-terminated pathname of the terminal device that is open on the file descriptor fd, or NULL on error (for example, if fd is not connected to a terminal). The return value may point to static data, possibly overwritten by the next call. The function ttyname_r() stores this pathname in the buffer buf of size size.RETURN VALUE
The function ttyname() returns a pointer to a pathname on success. On error, NULL is returned, and errno is set to indicate the error. The function ttyname_r() returns 0 on success, and an error number upon error.ERRORS
- EBADF
- Bad file descriptor.
- ENODEV fd refers to a slave pseudoterminal device but the corresponding pathname could not be found (see NOTES).
- ENOTTY
- fd does not refer to a terminal device.
- ERANGE
- (ttyname_r()) size was too small to allow storing the pathname.
ATTRIBUTES
For an explanation of the terms used in this section, see attributes(7).| Interface | Attribute | Value |
| ttyname() | Thread safety | M-Unsafe race:ttyname |
| ttyname_r() | Thread safety | M-Safe |
STANDARDS
POSIX.-2008.HISTORY
POSIX.-2001, 4.2BSD.NOTES
A process that keeps a file descriptor that refers to a pts(4) device open when switching to another mount namespace that uses a different /dev/ptmx instance may still accidentally find that a device path of the same name for that file descriptor exists. However, this device path refers to a different device and thus can't be used to access the device that the file descriptor refers to. Calling ttyname() or ttyname_r() on the file descriptor in the new mount namespace will cause these functions to return NULL and set errno to ENODEV.SEE ALSO
tty(1), fstat(2), ctermid(3), isatty(3), pts(4)