Provided by: manpages-dev_5.10-1ubuntu1_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 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                │
       └────────────┴───────────────┴────────────────────────┘

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.10 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/.