---
name: "ptsname_r"
section: "3"
platform: "linux"
package: "man-pages"
version: "6.19-1"
release: "Arch Linux 2026-11-01"
platforms: ["linux", "freebsd"]
url: "https://new.carta.tech/ptsname"
---

# ptsname\_r(3)

get the name of the slave pseudoterminal

Part of [ptsname(3)](/ptsname/3.md).

## NAME

ptsname, ptsname\_r - get the name of the slave pseudoterminal

## LIBRARY

Standard C library (*libc*, *-lc*)

## SYNOPSIS

```
#include <stdlib.h>
```

**char \*ptsname(int** *fd***);** **int ptsname\_r(**size\_t size;               **int** *fd***, char** *buf***\[***size***\], size\_t** *size***);**

Feature Test Macro Requirements for glibc (see [**feature\_test\_macros**(7)](/feature_test_macros/7.md)):

**ptsname**():

```
    Since glibc 2.24:
        _XOPEN_SOURCE >= 500
    glibc 2.23 and earlier:
        _XOPEN_SOURCE
```

**ptsname\_r**():

```
    _GNU_SOURCE
```

## DESCRIPTION

The **ptsname**() function returns the name of the slave pseudoterminal device corresponding to the master referred to by the file descriptor *fd*.

The **ptsname\_r**() function is the reentrant equivalent of **ptsname**(). It returns the name of the slave pseudoterminal device as a null-terminated string in the buffer pointed to by *buf*. The *size* argument specifies the number of bytes available in *buf*.

## RETURN VALUE

On success, **ptsname**() returns a pointer to a string in static storage which will be overwritten by subsequent calls. This pointer must not be freed. On failure, NULL is returned.

On success, **ptsname\_r**() returns 0. On failure, an error number is returned to indicate the error.

## ERRORS

- **EINVAL**

  (**ptsname\_r**() only) *buf* is NULL. (This error is returned only for glibc 2.25 and earlier.)

- **ENOTTY**

  *fd* does not refer to a pseudoterminal master device.

- **ERANGE**

  (**ptsname\_r**() only) *buf* is too small.

## ATTRIBUTES

For an explanation of the terms used in this section, see [**attributes**(7)](/attributes/7.md).

| | | |
| --- | --- | --- |
| **Interface** | **Attribute** | **Value** |
| **ptsname**() | Thread safety | MT-Unsafe race:ptsname |
| **ptsname\_r**() | Thread safety | MT-Safe |

## VERSIONS

A version of **ptsname\_r**() is documented on Tru64, HP-UX, and FreeBSD, but on those implementations, -1 is returned on error, with *errno* set to indicate the error. Avoid using this function in portable programs.

## STANDARDS

- **ptsname**():

  POSIX.1-2008.

- **ptsname\_r**():

  POSIX.1-2024.

## HISTORY

- **ptsname**():

  POSIX.1-2001. glibc 2.1.

**ptsname**() is part of the UNIX 98 pseudoterminal support (see [**pts**(4)](/pts/4.md)).

- **ptsname\_r**():

  GNU.

## SEE ALSO

[**grantpt**(3)](/grantpt/3.md), [**posix\_openpt**(3)](/posix_openpt/3.md), [**ttyname**(3)](/ttyname/3.md), [**unlockpt**(3)](/unlockpt/3.md), [**pts**(4)](/pts/4.md), [**pty**(7)](/pty/7.md)
