Manpages - ttyname.3

Table of Contents

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 to indicate the error. 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).

Interface Attribute Value
*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.13 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/.

Author: dt

Created: 2022-02-20 Sun 19:21