dwww Home | Manual pages | Find package

ttyname(3)                  Library Functions Manual                 ttyname(3)

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  re-
       turn  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 er-
       ror.

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).
       ┌─────────────────────────────┬───────────────┬────────────────────────┐
       │ Interface                   Attribute     Value                  │
       ├─────────────────────────────┼───────────────┼────────────────────────┤
       │ 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  func-
       tions to return NULL and set errno to ENODEV.

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

Linux man-pages 6.9.1              2024-05-02                        ttyname(3)

Generated by dwww version 1.16 on Tue Dec 16 04:18:17 CET 2025.