PTSNAME(3C) Standard C Library Functions PTSNAME(3C)
NAME
ptsname,
ptsname_r - get the name of the subsidiary device of a pseudo-
terminal
SYNOPSIS
#include <stdlib.h> char * ptsname(
int fildes);
int ptsname_r(
int fildes,
char *name,
size_t namelen);
DESCRIPTION
The
ptsname() function returns the name of the pseudo-terminal subsidiary
device associated with a pseudo-terminal manager device. The
fildes argument is a file descriptor returned from a successful open of the
pseudo-terminal manager device; e.g., by calling
posix_openpt(3C) or by
performing an
open(2) of the
ptm(4D) device.
The
ptsname() function returns a pointer to a string containing the null-
terminated path name of the subsidiary device. This string is of the form
/dev/pts/N, where
N is a non-negative integer. Callers should generally
assume that a subsequent call to
ptsname() will overwrite the returned
buffer. POSIX does not require that the interface be thread-safe. While a
per-thread buffer is currently being used, that should not be relied upon
by portable applications and is not a system guarantee.
The
ptsname_r() function behaves similarly to the
ptsname() function, but
rather than use a thread-specific buffer, stores the name of the pseudo-
terminal subsidiary device of
fildes in
name. The size of
name is
indicated by
namelen. If the buffer is not large enough, then the function
will fail with ERANGE. The name's length will not exceed {TTY_NAME_MAX},
which can be determined at runtime by calling
sysconf(3C) with the name
_SC_TTY_NAME_MAX.
RETURN VALUES
Upon successful completion, the
ptsname() function returns a pointer to a
string which is the name of the pseudo-terminal subsidiary device. This
value points to a static data area that is overwritten by each call to
ptsname() by the same thread. Otherwise, NULL is returned and
errno is set
to indicate the error that occurred.
Upon successful completion, the
ptsname_r() function will return
0 and
name will be filled in with the subsidiary device's name. Otherwise, an error
number will be returned.
ERRORS
The
ptsname() and
ptsname_r() functions will fail if:
EBADF The file descriptor,
fildes, does not refer to a valid
file descriptor.
EINVAL The file descriptor,
fildes, does not refer to a manager
pseudo-terminal device.
For the
ptsname_r() function,
name is a NULL pointer.
ENOTTY The file descriptor,
fildes, does not refer to a manager
pseudo-terminal device.
ERANGE For the
ptsname_r() function, the buffer
name 's size as
indicated by
namelen was too small to hold the actual
subsidiary device's name.
INTERFACE STABILITY
CommittedMT LEVEL
The
ptsname() function is
Safe.
The
ptsname_r() function is
MT-Safe.
SEE ALSO
open(2),
grantpt(3C),
posix_openpt(3C),
ttyname(3C),
unlockpt(3C),
ptm(4D),
pts(4D),
attributes(7),
standards(7)illumos July 2, 2024 illumos