Updated: 2022/Sep/29

Please read Privacy Policy. It's for your privacy.


POSIX_OPENPT(3)            Library Functions Manual            POSIX_OPENPT(3)

NAME
     posix_openpt - open a pseudo-terminal device

LIBRARY
     Standard C Library (libc, -lc)

SYNOPSIS
     #include <stdlib.h>
     #include <fcntl.h>

     int
     posix_openpt(int oflag);

DESCRIPTION
     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.

RETURN VALUES
     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 and O_CLOEXEC are
     supported.

SEE ALSO
     ioctl(2), open(2), grantpt(3), ptsname(3), unlockpt(3)

RATIONALE
     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);
             }

STANDARDS
     The posix_openpt() function conforms to IEEE Std 1003.1-2001 ("POSIX.1").

HISTORY
     This function first appeared in NetBSD 3.  Support for non-standard flags
     appeared in NetBSD 10.

NetBSD 10.99                   November 15, 2022                  NetBSD 10.99