POSIX_OPENPT(3)

NAME
posix_openpt - open a pseudo-terminal device

LIBRARY
libc

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, O_CLOEXEC, and O_CLOFORK 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 p1003.1-2001.

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