Provided by: manpages-dev_6.7-2_all bug

NAME

       ttyname, ttyname_r - return name of a terminal

LIBRARY

       Standard C library (libc, -lc)

SYNOPSIS

       #include <unistd.h>

       char *ttyname(int fd);
       int ttyname_r(int fd, char buf[.buflen], size_t buflen);

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.

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()) buflen was too small to allow storing the pathname.

ATTRIBUTES

       For an explanation of the terms used in this section, see attributes(7).

       ┌───────────────────────────────────────────────────────────────┬───────────────┬────────────────────────┐
       │InterfaceAttributeValue                  │
       ├───────────────────────────────────────────────────────────────┼───────────────┼────────────────────────┤
       │ttyname()                                                      │ Thread safety │ MT-Unsafe race:ttyname │
       ├───────────────────────────────────────────────────────────────┼───────────────┼────────────────────────┤
       │ttyname_r()                                                    │ Thread safety │ MT-Safe                │
       └───────────────────────────────────────────────────────────────┴───────────────┴────────────────────────┘

STANDARDS

       POSIX.1-2008.

HISTORY

       POSIX.1-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)