1TTYNAME(3)                 Linux Programmer's Manual                TTYNAME(3)
2
3
4

NAME

6       ttyname, ttyname_r - return name of a terminal
7

SYNOPSIS

9       #include <unistd.h>
10
11       char *ttyname(int fd);
12
13       int ttyname_r(int fd, char *buf, size_t buflen);
14

DESCRIPTION

16       The  function  ttyname() returns a pointer to the null-terminated path‐
17       name of the terminal device that is open on the file descriptor fd,  or
18       NULL on error (for example, if fd is not connected to a terminal).  The
19       return value may point to static data, possibly overwritten by the next
20       call.   The function ttyname_r() stores this pathname in the buffer buf
21       of length buflen.
22

RETURN VALUE

24       The function ttyname() returns a pointer to a pathname on success.   On
25       error,  NULL is returned, and errno is set appropriately.  The function
26       ttyname_r() returns 0 on success, and an error number upon error.
27

ERRORS

29       EBADF  Bad file descriptor.
30
31       ENODEV fd refers to a slave pseudoterminal device but the corresponding
32              pathname could not be found (see NOTES).
33
34       ENOTTY fd does not refer to a terminal device.
35
36       ERANGE (ttyname_r())  buflen  was  too small to allow storing the path‐
37              name.
38

ATTRIBUTES

40       For an  explanation  of  the  terms  used  in  this  section,  see  at‐
41       tributes(7).
42
43       ┌────────────┬───────────────┬────────────────────────┐
44Interface   Attribute     Value                  
45       ├────────────┼───────────────┼────────────────────────┤
46ttyname()   │ Thread safety │ MT-Unsafe race:ttyname │
47       ├────────────┼───────────────┼────────────────────────┤
48ttyname_r() │ Thread safety │ MT-Safe                │
49       └────────────┴───────────────┴────────────────────────┘

CONFORMING TO

51       POSIX.1-2001, POSIX.1-2008, 4.2BSD.
52

NOTES

54       A  process  that keeps a file descriptor that refers to a pts(4) device
55       open when switching to another mount namespace that  uses  a  different
56       /dev/ptmx  instance  may  still accidentally find that a device path of
57       the same name for that file descriptor exists.   However,  this  device
58       path  refers to a different device and thus can't be used to access the
59       device that the file descriptor refers to.  Calling ttyname()  or  tty‐
60       name_r()  on  the file descriptor in the new mount namespace will cause
61       these functions to return NULL and set errno to ENODEV.
62

SEE ALSO

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

COLOPHON

67       This page is part of release 5.10 of the Linux  man-pages  project.   A
68       description  of  the project, information about reporting bugs, and the
69       latest    version    of    this    page,    can     be     found     at
70       https://www.kernel.org/doc/man-pages/.
71
72
73
74Linux                             2019-10-10                        TTYNAME(3)
Impressum