]> git.ipfire.org Git - thirdparty/man-pages.git/blobdiff - man3/openpty.3
dlopen.3: tfix
[thirdparty/man-pages.git] / man3 / openpty.3
index 27c8afbe1bf70beba411ed50d25e4ac66eccd666..56c8b4411c8b55c2339f0829dc0e3385bee39e92 100644 (file)
@@ -1,6 +1,7 @@
 .\" Copyright (c) OpenBSD Group
 .\" All rights reserved.
 .\"
+.\" %%%LICENSE_START(BSD_3_CLAUSE_UCB)
 .\" Redistribution and use in source and binary forms, with or without
 .\" modification, are permitted provided that the following conditions
 .\" are met:
 .\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
 .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
 .\" SUCH DAMAGE.
+.\" %%%LICENSE_END
 .\"
 .\" Converted into a manpage again by Martin Schulze <joey@infodrom.org>
 .\"
 .\" Added -lutil remark, 030718
 .\"
-.TH OPENPTY 3  "2003-07-18" "BSD" "Linux Programmer's Manual"
+.TH OPENPTY 3  2017-09-15 "GNU" "Linux Programmer's Manual"
 .SH NAME
-openpty, login_tty, forkpty \- tty utility functions
+openpty, login_tty, forkpty \- terminal utility functions
 .SH SYNOPSIS
+.nf
 .B #include <pty.h>
-\ /* for openpty and forkpty */
-.br
+.PP
+.BI "int openpty(int *" amaster ", int *" aslave ", char *" name ,
+.BI "            const struct termios *" termp ,
+.BI "            const struct winsize *" winp );
+.PP
+.BI "pid_t forkpty(int *" amaster ", char *" name ,
+.BI "              const struct termios *" termp ,
+.BI "              const struct winsize *" winp );
+
 .B #include <utmp.h>
-/* for login_tty */
-.sp
-.BI "int openpty(int *" amaster ", int *" aslave ", char *" name ", struct termios *" termp ", struct winsize * " winp );
-.sp
+.PP
 .BI "int login_tty(int " fd );
-.sp
-.BI "pid_t forkpty(int *" amaster ", char *" name ", struct termios *" termp ", struct winsize *" winp );
-.sp
-Link with \-lutil.
+.PP
+Link with \fI\-lutil\fP.
+.fi
 .SH DESCRIPTION
 The
-.B openpty()
-function finds an available pseudo-terminal and returns file descriptors
+.BR openpty ()
+function finds an available pseudoterminal and returns file descriptors
 for the master and slave in
 .I amaster
 and
@@ -67,94 +73,127 @@ If
 .I winp
 is not NULL, the window size of the slave will be set to the values in
 .IR winp .
-
+.PP
 The
-.B login_tty()
-function prepares for a login on the tty
+.BR login_tty ()
+function prepares for a login on the terminal
 .I fd
-(which may be a real tty device, or the slave of a pseudo-terminal as
+(which may be a real terminal device, or the slave of a pseudoterminal as
 returned by
-.BR openpty() )
+.BR openpty ())
 by creating a new session, making
 .I fd
-the controlling terminal for the current process, setting
+the controlling terminal for the calling process, setting
 .I fd
 to be the standard input, output, and error streams of the current
 process, and closing
 .IR fd .
-
+.PP
 The
-.B forkpty()
+.BR forkpty ()
 function combines
-.BR openpty() ,
-.BR fork() ,
+.BR openpty (),
+.BR fork (2),
 and
-.B login_tty()
-to create a new process operating in a pseudo-terminal.  The file
-descriptor of the master side of the pseudo-terminal is returned in
-.IR amaster ,
-and the filename of the slave in
+.BR login_tty ()
+to create a new process operating in a pseudoterminal.
+The file
+descriptor of the master side of the pseudoterminal is returned in
+.IR amaster .
+If
 .I name
-if it is not NULL.  The
+is not NULL, the buffer it points to is used to return the
+filename of the slave.
+The
 .I termp
 and
 .I winp
-parameters, if not NULL,
+arguments, if not NULL,
 will determine the terminal attributes and window size of the slave
-side of the pseudo-terminal.
-.SH "RETURN VALUES"
+side of the pseudoterminal.
+.SH RETURN VALUE
 If a call to
-.BR openpty() ,
-.BR login_tty() ,
+.BR openpty (),
+.BR login_tty (),
 or
-.B forkpty()
+.BR forkpty ()
 is not successful, \-1 is returned and
 .I errno
-is set to indicate the error.  Otherwise,
-.BR openpty() ,
-.BR login_tty() ,
+is set to indicate the error.
+Otherwise,
+.BR openpty (),
+.BR login_tty (),
 and the child process of
-.B forkpty()
+.BR forkpty ()
 return 0, and the parent process of
-.B forkpty()
+.BR forkpty ()
 returns the process ID of the child process.
 .SH ERRORS
-.B openpty()
-will fail if:
+.BR openpty ()
+fails if:
 .TP
 .B ENOENT
-There are no available ttys.
-.LP
-.B login_pty()
-will fail if
-.B ioctl()
+There are no available terminals.
+.PP
+.BR login_tty ()
+fails if
+.BR ioctl (2)
 fails to set
 .I fd
-to the controlling terminal of the current process.
-.LP
-.B forkpty()
-will fail if either
-.B openpty()
+to the controlling terminal of the calling process.
+.PP
+.BR forkpty ()
+fails if either
+.BR openpty ()
 or
-.B fork()
+.BR fork (2)
 fails.
-.SH NOTE
-These functions are included in libutil, hence you'll need to add
-.B \-lutil
-to your compiler command line.
-.SH FILES
-.I /dev/[pt]ty[pqrstuwxyzabcdePQRST][0123456789abcdef]
-.SH "CONFORMING TO"
-These are BSD functions, present in libc5 and glibc2.
+.SH ATTRIBUTES
+For an explanation of the terms used in this section, see
+.BR attributes (7).
+.TS
+allbox;
+lbw20 lb lb
+l l l.
+Interface      Attribute       Value
+T{
+.BR forkpty (),
+.BR openpty ()
+T}     Thread safety   MT-Safe locale
+T{
+.BR login_tty ()
+T}     Thread safety   MT-Unsafe race:ttyname
+.TE
+.sp 1
+.SH CONFORMING TO
+These are BSD functions, present in glibc.
+They are not standardized in POSIX.
+.SH NOTES
+The
+.B const
+modifiers were added to the structure pointer arguments of
+.BR openpty ()
+and
+.BR forkpty ()
+in glibc 2.8.
+.PP
+In versions of glibc before 2.0.92,
+.BR openpty ()
+returns file descriptors for a BSD pseudoterminal pair;
+since glibc 2.0.92,
+it first attempts to open a UNIX 98 pseudoterminal pair,
+and falls back to opening a BSD pseudoterminal pair if that fails.
 .SH BUGS
 Nobody knows how much space should be reserved for
 .IR name .
 So, calling
-.B openpty()
+.BR openpty ()
 or
-.B forkpty()
+.BR forkpty ()
 with non-NULL
 .I name
 may not be secure.
-.SH "SEE ALSO"
-.BR fork (2)
+.SH SEE ALSO
+.BR fork (2),
+.BR ttyname (3),
+.BR pty (7)