---
name: "ttyname"
section: "3"
platform: "macos"
package: "Libc"
version: "1752.120.2"
release: "macOS 26.5"
platforms: ["linux", "freebsd", "macos"]
url: "https://new.carta.tech/ttyname"
---

# ttyname(3)

get name of associated terminal (tty) from file descriptor

## NAME

**ttyname**, **ttyname\_r**, **isatty** – get name of associated terminal (tty) from file descriptor

## LIBRARY

Standard C Library (libc, -lc)

## SYNOPSIS

**#include \<unistd.h\>**

*char* *\**\

**ttyname**(*int fd*);

*int*\

**ttyname\_r**(*int fd*, *char \*buf*, *size\_t len*);

*int*\

**isatty**(*int fd*);

## DESCRIPTION

These functions operate on file descriptors for terminal type devices.

The **isatty**() function determines if the file descriptor *fd* refers to a valid terminal type device.

The **ttyname**() function gets the related device name of a file descriptor for which **isatty**() is true.

The **ttyname**() function returns the name stored in a static buffer which will be overwritten on subsequent calls. The **ttyname\_r**() function takes a buffer and length as arguments to avoid this problem.

## RETURN VALUES

The **isatty**() function returns 1 if *fd* refers to a terminal type device; otherwise, it returns 0 and may set *errno* to indicate the error. The **ttyname**() function returns the null terminated name if the device is found and **isatty**() is true; otherwise a NULL pointer is returned. The **ttyname\_r**() function returns 0 if successful. Otherwise an error number is returned.

## ERRORS

These functions may fail if:

- \[EBADF\]

  The *fd* argument is not a valid file descriptor.

- \[ENOTTY\]

  The file associated with *fd* is not a terminal.

Additionally, **ttyname\_r**() may fail if:

- \[ERANGE\]

  The *bufsize* argument is smaller than the length of the string to be returned.

## SEE ALSO

[ioctl(2)](/ioctl/2.md), [ptsname(3)](/ptsname/3.md), [tcgetattr(3)](/tcgetattr/3.md), [tty(4)](/tty/4.md), [ttys(5)](/ttys/5.md)

## HISTORY

The **isatty**() and **ttyname**() functions appeared in Version 7 AT&T UNIX. The **ttyname\_r**() function appeared in FreeBSD 6.0.
