1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111
|
'\" t
.\" Copyright (c) 1995 Jim Van Zandt <jrv@vanzandt.mv.com>
.\"
.\" SPDX-License-Identifier: GPL-2.0-or-later
.\"
.\" Modified 2001-12-13, Martin Schulze <joey@infodrom.org>
.\" Added ttyname_r, aeb, 2002-07-20
.\"
.TH ttyname 3 2024-05-02 "Linux man-pages (unreleased)"
.SH NAME
ttyname, ttyname_r \- return name of a terminal
.SH LIBRARY
Standard C library
.RI ( libc ", " \-lc )
.SH SYNOPSIS
.nf
.B #include <unistd.h>
.P
.BI "char *ttyname(int " fd );
.BI "int ttyname_r(int " fd ", char " buf [. buflen "], size_t " buflen );
.fi
.SH DESCRIPTION
The function
.BR ttyname ()
returns a pointer to the null-terminated pathname of the terminal device
that is open on the file descriptor \fIfd\fP, or NULL on error
(for example, if \fIfd\fP is not connected to a terminal).
The return value may point to static data, possibly overwritten by the
next call.
The function
.BR ttyname_r ()
stores this pathname in the buffer
.I buf
of length
.IR buflen .
.SH RETURN VALUE
The function
.BR ttyname ()
returns a pointer to a pathname on success.
On error, NULL is returned, and
.I errno
is set to indicate the error.
The function
.BR ttyname_r ()
returns 0 on success, and an error number upon error.
.SH ERRORS
.TP
.B EBADF
Bad file descriptor.
.TP
.\" glibc commit 15e9a4f378c8607c2ae1aa465436af4321db0e23
.B ENODEV
.I fd
refers to a slave pseudoterminal device
but the corresponding pathname could not be found (see NOTES).
.TP
.B ENOTTY
.I fd
does not refer to a terminal device.
.TP
.B ERANGE
.RB ( ttyname_r ())
.I buflen
was too small to allow storing the pathname.
.SH ATTRIBUTES
For an explanation of the terms used in this section, see
.BR attributes (7).
.TS
allbox;
lbx lb lb
l l l.
Interface Attribute Value
T{
.na
.nh
.BR ttyname ()
T} Thread safety MT-Unsafe race:ttyname
T{
.na
.nh
.BR ttyname_r ()
T} Thread safety MT-Safe
.TE
.SH STANDARDS
POSIX.1-2008.
.SH HISTORY
POSIX.1-2001, 4.2BSD.
.SH NOTES
A process that keeps a file descriptor that refers to a
.BR pts (4)
device open when switching to another mount namespace that uses a different
.I /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
.BR ttyname ()
or
.BR ttyname_r ()
on the file descriptor in the new mount namespace will cause these
functions to return NULL and set
.I errno
to
.BR ENODEV .
.SH SEE ALSO
.BR tty (1),
.BR fstat (2),
.BR ctermid (3),
.BR isatty (3),
.BR pts (4)
|