Provided by: manpages-dev_5.05-1_all bug

NAME

       ttyname, ttyname_r - return name of a terminal

SYNOPSIS

       #include <unistd.h>

       char *ttyname(int fd);

       int ttyname_r(int fd, char *buf, 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 appropriately.  The function ttyname_r() returns 0 on success, and an error number upon error.

ERRORS

       EBADF  Bad file descriptor.

       ENODEV File  descriptor  refers to a slave pseudoterminal device but the corresponding pathname could not
              be found (see NOTES).

       ENOTTY File descriptor 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                │
       └────────────┴───────────────┴────────────────────────┘

CONFORMING TO

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

COLOPHON

       This  page  is  part  of  release  5.05  of  the  Linux man-pages project.  A description of the project,
       information  about  reporting  bugs,  and  the  latest  version  of  this   page,   can   be   found   at
       https://www.kernel.org/doc/man-pages/.