ttyname(3) — Linux manual page

NAME | LIBRARY | SYNOPSIS | DESCRIPTION | RETURN VALUE | ERRORS | ATTRIBUTES | STANDARDS | HISTORY | NOTES | SEE ALSO

ttyname(3)              Library Functions Manual              ttyname(3)

NAME         top

       ttyname, ttyname_r - return name of a terminal

LIBRARY         top

       Standard C library (libc, -lc)

SYNOPSIS         top

       #include <unistd.h>

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

DESCRIPTION         top

       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         top

       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         top

       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         top

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

STANDARDS         top

       POSIX.1-2008.

HISTORY         top

       POSIX.1-2001, 4.2BSD.

NOTES         top

       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         top

       tty(1), fstat(2), ctermid(3), isatty(3), pts(4)

Linux man-pages (unreleased)     (date)                       ttyname(3)

Pages that refer to this page: ctermid(3)getttyent(3)getutent(3)isatty(3)openpty(3)ptsname(3)ttyslot(3)