.\" 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 2010-06-13 "GNU" "Linux Programmer's Manual"
+.TH OPENPTY 3 2017-09-15 "GNU" "Linux Programmer's Manual"
.SH NAME
openpty, login_tty, forkpty \- terminal utility functions
.SH SYNOPSIS
.nf
.B #include <pty.h>
-.sp
+.PP
.BI "int openpty(int *" amaster ", int *" aslave ", char *" name ,
.BI " const struct termios *" termp ,
.BI " const struct winsize *" winp );
-.sp
+.PP
.BI "pid_t forkpty(int *" amaster ", char *" name ,
.BI " const struct termios *" termp ,
.BI " const struct winsize *" winp );
-.sp
+
.B #include <utmp.h>
-.sp
+.PP
.BI "int login_tty(int " fd );
-.sp
+.PP
Link with \fI\-lutil\fP.
.fi
.SH DESCRIPTION
.I winp
is not NULL, the window size of the slave will be set to the values in
.IR winp .
-
+.PP
The
.BR login_tty ()
function prepares for a login on the terminal
to be the standard input, output, and error streams of the current
process, and closing
.IR fd .
-
+.PP
The
.BR forkpty ()
function combines
to create a new process operating in a pseudoterminal.
The file
descriptor of the master side of the pseudoterminal is returned in
-.IR amaster ,
-and the filename of the slave in
+.IR amaster .
+If
.I name
-if it is not NULL.
+is not NULL, the buffer it points to is used to return the
+filename of the slave.
The
.I termp
and
returns the process ID of the child process.
.SH ERRORS
.BR openpty ()
-will fail if:
+fails if:
.TP
.B ENOENT
There are no available terminals.
-.LP
+.PP
.BR login_tty ()
-will fail if
+fails if
.BR ioctl (2)
fails to set
.I fd
to the controlling terminal of the calling process.
-.LP
+.PP
.BR forkpty ()
-will fail if either
+fails if either
.BR openpty ()
or
.BR fork (2)
fails.
+.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 libc5 and glibc2.
+These are BSD functions, present in glibc.
They are not standardized in POSIX.
.SH NOTES
The
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;