1.\" $NetBSD: posix_openpt.3,v 1.7 2022/09/06 22:54:41 gutteridge Exp $ 2.\" 3.\" Copyright (c) 2004 The NetBSD Foundation, Inc. 4.\" All rights reserved. 5.\" 6.\" This code is derived from software contributed to The NetBSD Foundation 7.\" by Christos Zoulas. 8.\" 9.\" Redistribution and use in source and binary forms, with or without 10.\" modification, are permitted provided that the following conditions 11.\" are met: 12.\" 1. Redistributions of source code must retain the above copyright 13.\" notice, this list of conditions and the following disclaimer. 14.\" 2. Redistributions in binary form must reproduce the above copyright 15.\" notice, this list of conditions and the following disclaimer in the 16.\" documentation and/or other materials provided with the distribution. 17.\" 18.\" THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS 19.\" ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED 20.\" TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 21.\" PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS 22.\" BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 23.\" CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 24.\" SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 25.\" INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 26.\" CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 27.\" ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 28.\" POSSIBILITY OF SUCH DAMAGE. 29.\" 30.Dd September 6, 2022 31.Dt POSIX_OPENPT 3 32.Os 33.Sh NAME 34.Nm posix_openpt 35.Nd open a pseudo-terminal device 36.Sh LIBRARY 37.Lb libc 38.Sh SYNOPSIS 39.In stdlib.h 40.In fcntl.h 41.Ft int 42.Fn posix_openpt "int oflag" 43.Sh DESCRIPTION 44The 45.Fn posix_openpt 46function searches for an unused master pseudo-terminal device, 47opens it, and returns a file descriptor associated with the now 48used pseudo-terminal device. 49The 50.Fa oflag 51argument has the same meaning as in the 52.Xr open 2 53call. 54However, the value of 55.Fa oflag 56is ignored; it exists for compatibility reasons only. 57.Sh RETURN VALUES 58If successful, 59.Fn posix_openpt 60returns a non-negative integer, which corresponds to a file descriptor 61pointing to the master pseudo-terminal device. 62Otherwise, a value of \-1 is returned and 63.Va errno 64is set to indicate the error. 65.Pp 66Note that unlike implementations on some other operating systems, 67.Fn posix_openpt 68does not return 69.Er EINVAL 70if the value of 71.Fa oflag 72would be deemed invalid, instead it is simply ignored. 73This means it is not possible to dynamically test which 74.Xr open 2 75flags are possible to set, and apply a fallback if 76.Er EINVAL 77is received. 78.Sh SEE ALSO 79.Xr ioctl 2 , 80.Xr open 2 , 81.Xr grantpt 3 , 82.Xr ptsname 3 , 83.Xr unlockpt 3 84.Sh RATIONALE 85The standards committee did not want to directly expose the cloning device, 86thus decided to wrap the functionality in this function. 87The equivalent code would be: 88.Bd -literal 89 int 90 posix_openpt(int oflag) { 91 return open("/dev/ptmx", oflag); 92 } 93.Ed 94.Sh STANDARDS 95The 96.Fn posix_openpt 97function conforms to 98.St -p1003.1-2001 . 99