ttyname, ttyname_r - return name of a terminal
Contents
Attributes
For an explanation of the terms used in this section, see attributes(7).
┌──────────────────────────────────────────────────────────────┬───────────────┬────────────────────────┐
│ Interface │ Attribute │ Value │
├──────────────────────────────────────────────────────────────┼───────────────┼────────────────────────┤
│ ttyname() │ Thread safety │ MT-Unsafe race:ttyname │
├──────────────────────────────────────────────────────────────┼───────────────┼────────────────────────┤
│ ttyname_r() │ Thread safety │ MT-Safe │
└──────────────────────────────────────────────────────────────┴───────────────┴────────────────────────┘
Description
The function ttyname() returns a pointer to the null-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 length buflen.
Errors
EBADF Bad file descriptor.
ENODEVfd refers to a slave pseudoterminal device but the corresponding pathname could not be found (see
NOTES).
ENOTTYfd does not refer to a terminal device.
ERANGE (ttyname_r()) buflen was too small to allow storing the pathname.
History
POSIX.1-2001, 4.2BSD.
Library
Standard C library (libc, -lc)
Name
ttyname, ttyname_r - return name of a terminal
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.
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.
See Also
tty(1), fstat(2), ctermid(3), isatty(3), pts(4) Linux man-pages 6.9.1 2024-05-02 ttyname(3)
Standards
POSIX.1-2008.
Synopsis
#include<unistd.h>char*ttyname(intfd);intttyname_r(intfd,charbuf[.buflen],size_tbuflen);