PTSNAME(3C) | Standard C Library Functions | PTSNAME(3C) |
ptsname
, ptsname_r
— get the name of the subsidiary device of a
pseudo-terminal
#include
<stdlib.h>
char *
ptsname
(int fildes);
int
ptsname_r
(int fildes,
char *name, size_t namelen);
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
.
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.
The ptsname
() and
ptsname_r
() functions will fail if:
EBADF
EINVAL
For the ptsname_r
() function,
name is a NULL
pointer.
ENOTTY
ERANGE
ptsname_r
() function, the buffer
name 's size as indicated by
namelen was too small to hold the actual subsidiary
device's name.open(2), grantpt(3C), posix_openpt(3C), ttyname(3C), unlockpt(3C), ptm(4D), pts(4D), attributes(7), standards(7)
July 2, 2024 | OmniOS |