| POSIX_OPENPT(3) | Library Functions Manual | POSIX_OPENPT(3) |
posix_openpt —
open a pseudo-terminal device
Standard C Library (libc, -lc)
#include
<stdlib.h>
#include <fcntl.h>
int
posix_openpt(int
oflag);
The
posix_openpt()
function searches for an unused master pseudo-terminal device, opens it, and
returns a file descriptor associated with the now used pseudo-terminal
device. The oflag argument has the same meaning as in
the open(2) call.
If successful, posix_openpt() returns a
non-negative integer, which corresponds to a file descriptor pointing to the
master pseudo-terminal device. Otherwise, a value of -1 is returned and
errno is set to indicate the error.
Note that unlike implementations on some other operating systems,
posix_openpt() does not return
EINVAL if a flag supplied in
oflag would be deemed invalid, instead it is simply
ignored. This means it is not possible to dynamically test which
open(2) flags are possible to
set, and apply a fallback if EINVAL is received.
However, this is unlikely to be a concern in practice, as flags such as
O_NONBLOCK, O_CLOEXEC, and
O_CLOFORK are supported.
The standards committee did not want to directly expose the cloning device, thus decided to wrap the functionality in this function. The equivalent code would be:
int
posix_openpt(int oflag) {
return open("/dev/ptmx", oflag);
}
The posix_openpt() function conforms to
IEEE Std 1003.1-2001 (“POSIX.1”).
This function first appeared in NetBSD 3. Support for non-standard flags appeared in NetBSD 10.
| August 6, 2025 | NetBSD 11.0 |