[RFC PATCH] Replacing "master-slave" terminology for pseudoterminals

enh enh@google.com
Wed Jul 29 16:31:08 GMT 2020


yeah, the old terminology was so non-obvious that reading through this,
every change seemed like an improvement in clarity.

my only suggestion would be to consistently use tty_fd and pty_fd in the
function signatures rather than just fd. (the presence or absence of 'p' in
the function name is a clue, i hadn't picked up on that until i
tried rewriting code to use pty/tty rather than master/slave.)

(aside: i was surprised by multiplexor rather than multiplexer, but grep
says man7.org has 2 multiplexors to 1 multiplexer, so lgtm.)

On Wed, Jul 29, 2020 at 3:39 AM Michael Kerrisk (man-pages) <
mtk.manpages@gmail.com> wrote:

> As per some discussion on libc-alpha [1], many of us are interested in
> finding a replacement for the problemantic master-slave terminology
> used in the description of pseudoterminals.
>
> Elliot Hughes (enh@) suggested a replacement based on an idea from
> an analogous change in the golang libraries, and I've taken a shot
> at implementing that idea in a branch [2] of man-pages. The affected
> pages are:
>
>  man2/ioctl_tty.2    | 23 +++++++++++--------
>  man2/poll.2         |  3 ++-
>  man3/getpt.3        |  2 +-
>  man3/grantpt.3      | 17 +++++++-------
>  man3/openpty.3      | 35 ++++++++++++++++------------
>  man3/posix_openpt.3 | 10 ++++----
>  man3/ptsname.3      | 10 ++++----
>  man3/ttyname.3      |  2 +-
>  man3/unlockpt.3     | 11 +++++----
>  man4/pts.4          | 26 ++++++++++++---------
>  man7/pty.7          | 65
> +++++++++++++++++++++++++++-------------------------
>  11 files changed, 112 insertions(+), 92 deletions(-)
>
> Eventually, I think we should take this discussion also to the
> mailing list, and also see if we can raise this within the POSIX
> committee. But let's see if we can fist off find some terminology
> that seems agreeable.
>
> I've added the full patch below. I am myself still reflecting on
> the change. At times, the language feels a little clunky, but overall
> I don't hate the result. I welcome comments from all, and especially
> I'd be interested in feedback from Elliot and from Zack, who was
> planning to work on this issue in the glibc documentation.
>
> Thanks,
>
> Michael
>
> [1] https://sourceware.org/pipermail/libc-alpha/2020-July/115792.html
> [2]
> https://git.kernel.org/pub/scm/docs/man-pages/man-pages.git/log/?h=pty_lang_fixup
>
>
> commit 05af4e7c070e4fa6fa810954264d5650b85d162e
> Author: Michael Kerrisk <mtk.manpages@gmail.com>
> Date:   Tue Jul 28 22:12:08 2020 +0200
>
>     ioctl_tty.2, poll.2, getpt.3, grantpt.3, openpty.3, posix_openpt.3,
> ptsname.3, ttyname.3, unlockpt.3, pts.4, pty.7: Eliminate problematic
> "master-slave" terminology
>
>     The "master-slave" terminology used in describing pseudoterminals
>     is problematic, and not even very technically descriptive. Rewrite
>     various manual pages to eliminate that language. The following
>     replacement terms are used:
>
>     slave ==> "terminal device"
>            (or "terminal end of the pseudoterminal device pair")
>
>     master ==> "pseudoterminal device"
>            (or "pseudoterminal end of the pseudoterminal device pair")
>
>     pseudoterminal (device) ==> "pseudoterminal device pair"
>
>     Another notable wording change is the use of phrasings such as
>     "the corresponding terminal device", when emphasizing the linkage
>     between the pseudoterminal and terminal ends of a pseudoterminal
>     device pair.
>
>     The terminology originates in golang (which made a similar
>     terminology change in 2019), and was suggested for Linux
>     man-pages by Elliot Hughes.
>
>     Reported-by: Elliott Hughes <enh@google.com>
>     Signed-off-by: Michael Kerrisk <mtk.manpages@gmail.com>
>
> diff --git a/man2/ioctl_tty.2 b/man2/ioctl_tty.2
> index 88ec0269a..7f504928e 100644
> --- a/man2/ioctl_tty.2
> +++ b/man2/ioctl_tty.2
> @@ -220,7 +220,8 @@ Redirect output that would have gone to
>  or
>  .I /dev/tty0
>  to the given terminal.
> -If that was a pseudoterminal master, send it to the slave.
> +If that was the pseudoterminal end of a pseudoterminal device pair,
> +send it to the corresponding terminal device.
>  In Linux before version 2.6.10,
>  anybody can do this as long as the output was not redirected yet;
>  since version 2.6.10, only a process with the
> @@ -283,7 +284,7 @@ Set the foreground process group ID of this terminal.
>  Get the session ID of the given terminal.
>  This fails with the error
>  .B ENOTTY
> -if the terminal is not a master pseudoterminal
> +if the terminal is not the pseudoterminal end of a pseudoterminal device
> pair
>  and not our controlling terminal.
>  Strange.
>  .SS Exclusive mode
> @@ -322,14 +323,15 @@ Set the line discipline of the terminal.
>  Enable (when
>  .RI * argp
>  is nonzero) or disable packet mode.
> -Can be applied to the master side of a pseudoterminal only (and will
> return
> +Can be applied only to the pseudoterminal end of a pseudoterminal device
> pair
> +(and will return
>  .B ENOTTY
>  otherwise).
>  In packet mode, each subsequent
>  .BR read (2)
>  will return a packet that either contains a single nonzero control byte,
>  or has a single byte containing zero (\(aq\e0\(aq) followed by data
> -written on the slave side of the pseudoterminal.
> +written on the terminal end of the pseudoterminal device pair.
>  If the first byte is not
>  .B TIOCPKT_DATA
>  (0), it is an OR of one
> @@ -346,7 +348,7 @@ TIOCPKT_NOSTOP      The start and stop characters are
> not \fB^S\fP/\fB^Q\fP.
>  .IP
>  While packet mode is in use, the presence
>  of control status information to be read
> -from the master side may be detected by a
> +from the pseudoterminal end of the device pair may be detected by a
>  .BR select (2)
>  for exceptional conditions or a
>  .BR poll (2)
> @@ -371,13 +373,14 @@ Set (if
>  .IR *argp
>  is nonzero) or remove (if
>  .IR *argp
> -is zero) the lock on the pseudoterminal slave device.
> +is zero) the lock on the terminal end of a pseudoterminal device pair.
>  (See also
>  .BR unlockpt (3).)
>  .TP
>  .BI "TIOCGPTLCK        int *" argp
>  (since Linux 3.8)
> -Place the current lock state of the pseudoterminal slave device
> +Place the current lock state of the terminal end of
> +a pseudoterminal device pair
>  in the location pointed to by
>  .IR argp .
>  .TP
> @@ -386,14 +389,14 @@ in the location pointed to by
>  (since Linux 4.13)
>  Given a file descriptor in
>  .I fd
> -that refers to a pseudoterminal master,
> +that refers to the pseudoterminal end of a pseudoterminal device pair,
>  open (with the given
>  .BR open (2)-style
>  .IR flags )
>  and return a new file descriptor that refers to the peer
> -pseudoterminal slave device.
> +terminal device.
>  This operation can be performed
> -regardless of whether the pathname of the slave device
> +regardless of whether the pathname of the terminal device
>  is accessible through the calling process's mount namespace.
>  .IP
>  Security-conscious programs interacting with namespaces may wish to use
> this
> diff --git a/man2/poll.2 b/man2/poll.2
> index 940c51da5..b4428e9f6 100644
> --- a/man2/poll.2
> +++ b/man2/poll.2
> @@ -172,7 +172,8 @@ Possibilities include:
>  There is out-of-band data on a TCP socket (see
>  .BR tcp (7)).
>  .IP \(bu
> -A pseudoterminal master in packet mode has seen a state change on the
> slave
> +A pseudoterminal device in packet mode has seen a state change on
> +the corresponding terminal device
>  (see
>  .BR ioctl_tty (2)).
>  .IP \(bu
> diff --git a/man3/getpt.3 b/man3/getpt.3
> index 89c3813a8..65904596d 100644
> --- a/man3/getpt.3
> +++ b/man3/getpt.3
> @@ -6,7 +6,7 @@
>  .\"
>  .TH GETPT 3 2020-02-09 "GNU" "Linux Programmer's Manual"
>  .SH NAME
> -getpt \- open a new pseudoterminal master
> +getpt \- open a new pseudoterminal device
>  .SH SYNOPSIS
>  .nf
>  .BR "#define _GNU_SOURCE" "             /* See feature_test_macros(7) */"
> diff --git a/man3/grantpt.3 b/man3/grantpt.3
> index 34c59a52b..c09d50685 100644
> --- a/man3/grantpt.3
> +++ b/man3/grantpt.3
> @@ -4,7 +4,7 @@
>  .\"
>  .TH GRANTPT 3 2017-09-15 "GNU" "Linux Programmer's Manual"
>  .SH NAME
> -grantpt \- grant access to the slave pseudoterminal
> +grantpt \- grant access to the terminal device corresponding to a
> pseudoterminal
>  .SH SYNOPSIS
>  .B #include <stdlib.h>
>  .PP
> @@ -30,13 +30,14 @@ Glibc 2.23 and earlier:
>  .SH DESCRIPTION
>  The
>  .BR grantpt ()
> -function changes the mode and owner of the slave pseudoterminal device
> -corresponding to the master pseudoterminal referred to by the file
> descriptor
> +function changes the mode and owner of the terminal device
> +corresponding to the pseudoterminal device referred to by the file
> descriptor
>  .IR fd .
> -The user ID of the slave is set to the real UID of the calling process.
> +The user ID of the terminal device
> +is set to the real UID of the calling process.
>  The group ID is set to an unspecified value (e.g.,
>  .IR tty ).
> -The mode of the slave is set to 0620 (crw\-\-w\-\-\-\-).
> +The mode of the terminal device is set to 0620 (crw\-\-w\-\-\-\-).
>  .PP
>  The behavior of
>  .BR grantpt ()
> @@ -53,7 +54,7 @@ appropriately.
>  .SH ERRORS
>  .TP
>  .B EACCES
> -The corresponding slave pseudoterminal could not be accessed.
> +The corresponding terminal device could not be accessed.
>  .TP
>  .B EBADF
>  The
> @@ -63,7 +64,7 @@ argument is not a valid open file descriptor.
>  .B EINVAL
>  The
>  .I fd
> -argument is valid but not associated with a master pseudoterminal.
> +argument is valid but not associated with a pseudoterminal device.
>  .SH VERSIONS
>  .BR grantpt ()
>  is provided in glibc since version 2.1.
> @@ -90,7 +91,7 @@ Many systems implement this function via a set-user-ID
> helper binary
>  called "pt_chown".
>  On Linux systems with a devpts filesystem (present since Linux 2.2),
>  the kernel normally sets the correct ownership and permissions
> -for the pseudoterminal slave when the master is opened
> +for the corresponding terminal device when the pseudoterminal device is
> opened
>  .RB ( posix_openpt (3)),
>  so that nothing must be done by
>  .BR grantpt ().
> diff --git a/man3/openpty.3 b/man3/openpty.3
> index 9d3dcc236..8580dc9a4 100644
> --- a/man3/openpty.3
> +++ b/man3/openpty.3
> @@ -38,11 +38,11 @@ openpty, login_tty, forkpty \- terminal utility
> functions
>  .nf
>  .B #include <pty.h>
>  .PP
> -.BI "int openpty(int *" amaster ", int *" aslave ", char *" name ,
> +.BI "int openpty(int *" fd_pty ", int *" fd_tty ", char *" name ,
>  .BI "            const struct termios *" termp ,
>  .BI "            const struct winsize *" winp );
>  .PP
> -.BI "pid_t forkpty(int *" amaster ", char *" name ,
> +.BI "pid_t forkpty(int *" fd_pty ", char *" name ,
>  .BI "              const struct termios *" termp ,
>  .BI "              const struct winsize *" winp );
>
> @@ -55,23 +55,26 @@ Link with \fI\-lutil\fP.
>  .SH DESCRIPTION
>  The
>  .BR openpty ()
> -function finds an available pseudoterminal and returns file descriptors
> -for the master and slave in
> -.I amaster
> +function finds an available pseudoterminal device pair
> +and returns file descriptors
> +for the pseudoterminal device and the corresponding terminal device in
> +.I fd_pty
>  and
> -.IR aslave .
> +.IR fd_tty .
>  If
>  .I name
> -is not NULL, the filename of the slave is returned in
> +is not NULL, the filename of the corresponding terminal device is
> returned in
>  .IR name .
>  If
>  .I termp
> -is not NULL, the terminal parameters of the slave will be set to the
> +is not NULL, the terminal parameters of the corresponding terminal device
> +will be set to the
>  values in
>  .IR termp .
>  If
>  .I winp
> -is not NULL, the window size of the slave will be set to the values in
> +is not NULL, the window size of the corresponding terminal device
> +will be set to the values in
>  .IR winp .
>  .PP
>  The
> @@ -79,7 +82,8 @@ The
>  function prepares for a login on the terminal
>  referred to by the file descriptor
>  .I fd
> -(which may be a real terminal device, or the slave of a pseudoterminal as
> +(which may be a real terminal device,
> +or the terminal end of a pseudoterminal device pair as
>  returned by
>  .BR openpty ())
>  by creating a new session, making
> @@ -99,19 +103,20 @@ and
>  .BR login_tty ()
>  to create a new process operating in a pseudoterminal.
>  A file descriptor referring to
> -master side of the pseudoterminal is returned in
> -.IR amaster .
> +the pseudoterminal end of the pseudoterminal device pair
> +is returned in
> +.IR fd_pty .
>  If
>  .I name
>  is not NULL, the buffer it points to is used to return the
> -filename of the slave.
> +filename of the corresponding terminal device.
>  The
>  .I termp
>  and
>  .I winp
>  arguments, if not NULL,
> -will determine the terminal attributes and window size of the slave
> -side of the pseudoterminal.
> +will determine the terminal attributes and window size of the terminal end
> +of the pseudoterminal device pair.
>  .SH RETURN VALUE
>  If a call to
>  .BR openpty (),
> diff --git a/man3/posix_openpt.3 b/man3/posix_openpt.3
> index 6feaae03d..a932cc9f0 100644
> --- a/man3/posix_openpt.3
> +++ b/man3/posix_openpt.3
> @@ -45,7 +45,7 @@ _XOPEN_SOURCE\ >=\ 600
>  .SH DESCRIPTION
>  The
>  .BR posix_openpt ()
> -function opens an unused pseudoterminal master device, returning a
> +function opens an unused pseudoterminal device, returning a
>  file descriptor that can be used to refer to that device.
>  .PP
>  The
> @@ -109,10 +109,12 @@ posix_openpt(int flags)
>  .PP
>  Calling
>  .BR posix_openpt ()
> -creates a pathname for the corresponding pseudoterminal slave device.
> -The pathname of the slave device can be obtained using
> +creates a pathname for the terminal device that corresponds
> +to the pseudoterminal.
> +The pathname of the terminal device can be obtained using
>  .BR ptsname (3).
> -The slave device pathname exists only as long as the master device is
> open.
> +The terminal device pathname exists only as long as
> +the pseudoterminal device is open.
>  .SH SEE ALSO
>  .BR open (2),
>  .BR getpt (3),
> diff --git a/man3/ptsname.3 b/man3/ptsname.3
> index 5ae25c5e4..eb3d16cac 100644
> --- a/man3/ptsname.3
> +++ b/man3/ptsname.3
> @@ -6,7 +6,7 @@
>  .\"
>  .TH PTSNAME 3 2020-06-09 "" "Linux Programmer's Manual"
>  .SH NAME
> -ptsname, ptsname_r \- get the name of the slave pseudoterminal
> +ptsname, ptsname_r \- get the name of the terminal corresponding to a
> pseudoterminal
>  .SH SYNOPSIS
>  .B #include <stdlib.h>
>  .PP
> @@ -37,15 +37,15 @@ Glibc 2.23 and earlier:
>  .SH DESCRIPTION
>  The
>  .BR ptsname ()
> -function returns the name of the slave pseudoterminal device
> -corresponding to the master referred to by the file descriptor
> +function returns the name of the terminal device
> +corresponding to the pseudoterminal device referred to by the file
> descriptor
>  .IR fd .
>  .PP
>  The
>  .BR ptsname_r ()
>  function is the reentrant equivalent of
>  .BR ptsname ().
> -It returns the name of the slave pseudoterminal device as a
> +It returns the name of the terminal device as a
>  null-terminated string in the buffer pointed to by
>  .IR buf .
>  The
> @@ -79,7 +79,7 @@ glibc 2.25 and earlier.)
>  .TP
>  .B ENOTTY
>  .I fd
> -does not refer to a pseudoterminal master device.
> +does not refer to a pseudoterminal device.
>  .TP
>  .B ERANGE
>  .RB ( ptsname_r ()
> diff --git a/man3/ttyname.3 b/man3/ttyname.3
> index 93932610b..cd9831522 100644
> --- a/man3/ttyname.3
> +++ b/man3/ttyname.3
> @@ -67,7 +67,7 @@ Bad file descriptor.
>  .\" glibc commit 15e9a4f378c8607c2ae1aa465436af4321db0e23
>  .B ENODEV
>  .I fd
> -refers to a slave pseudoterminal device
> +refers to the terminal end of a pseudoterminal device pair
>  but the corresponding pathname could not be found (see NOTES).
>  .TP
>  .B ENOTTY
> diff --git a/man3/unlockpt.3 b/man3/unlockpt.3
> index 26333ef6d..c3d67f4a2 100644
> --- a/man3/unlockpt.3
> +++ b/man3/unlockpt.3
> @@ -4,7 +4,7 @@
>  .\"
>  .TH UNLOCKPT 3 2017-07-13 "" "Linux Programmer's Manual"
>  .SH NAME
> -unlockpt \- unlock a pseudoterminal master/slave pair
> +unlockpt \- unlock a pseudoterminal device pair
>  .SH SYNOPSIS
>  .B #define _XOPEN_SOURCE
>  .br
> @@ -32,12 +32,13 @@ Glibc 2.23 and earlier:
>  .SH DESCRIPTION
>  The
>  .BR unlockpt ()
> -function unlocks the slave pseudoterminal device
> -corresponding to the master pseudoterminal referred to by the file
> descriptor
> +function unlocks the terminal device
> +corresponding to the pseudoterminal device referred to by the file
> descriptor
>  .IR fd .
>  .PP
>  .BR unlockpt ()
> -should be called before opening the slave side of a pseudoterminal.
> +should be called before opening the terminal end of
> +a pseudoterminal device pair.
>  .SH RETURN VALUE
>  When successful,
>  .BR unlockpt ()
> @@ -55,7 +56,7 @@ argument is not a file descriptor open for writing.
>  .B EINVAL
>  The
>  .I fd
> -argument is not associated with a master pseudoterminal.
> +argument is not associated with a pseudoterminal device.
>  .SH VERSIONS
>  .BR unlockpt ()
>  is provided in glibc since version 2.1.
> diff --git a/man4/pts.4 b/man4/pts.4
> index 0b0682433..8897c924a 100644
> --- a/man4/pts.4
> +++ b/man4/pts.4
> @@ -7,50 +7,54 @@
>  .\"
>  .TH PTS 4 2016-03-15 "Linux" "Linux Programmer's Manual"
>  .SH NAME
> -ptmx, pts \- pseudoterminal master and slave
> +ptmx, pts \- pseudoterminal devices
>  .SH DESCRIPTION
>  The file
>  .I /dev/ptmx
>  (the pseudoterminal multiplexor device)
>  is a character file with major number 5 and
>  minor number 2, usually with mode 0666 and ownership root:root.
> -It is used to create a pseudoterminal master and slave pair.
> +It is used to create a pseudoterminal device pair.
>  .PP
>  When a process opens
>  .IR /dev/ptmx ,
>  it gets a file
> -descriptor for a pseudoterminal master
> -and a pseudoterminal slave device is created in the
> +descriptor for a new pseudoterminal device
> +and a corresponding terminal device is created in the
>  .I /dev/pts
>  directory.
>  Each file descriptor obtained by opening
>  .IR /dev/ptmx
> -is an independent pseudoterminal master with its own associated slave,
> +is an independent pseudoterminal device with its own associated terminal
> device,
>  whose path can
>  be found by passing the file descriptor to
>  .BR ptsname (3).
>  .PP
> -Before opening the pseudoterminal slave, you must pass the master's file
> +Before opening the corresponding terminal device,
> +you must pass the pseudoterminal device's file
>  descriptor to
>  .BR grantpt (3)
>  and
>  .BR unlockpt (3).
>  .PP
> -Once both the pseudoterminal master and slave are open, the slave provides
> +Once both the pseudoterminal device and the terminal device are open,
> +the terminal device provides
>  processes with an interface that is identical to that of a real terminal.
>  .PP
> -Data written to the slave is presented on the master file descriptor as
> input.
> -Data written to the master is presented to the slave as input.
> +Data written to the terminal device is presented on
> +the pseudoterminal device as input.
> +Data written to the pseudoterminal device is presented
> +to the terminal device as input.
>  .PP
>  In practice, pseudoterminals are used for implementing terminal emulators
>  such as
>  .BR xterm (1),
> -in which data read from the pseudoterminal master is interpreted by the
> +in which data read from the pseudoterminal device is interpreted by the
>  application in the same way
>  a real terminal would interpret the data, and for implementing
> remote-login
>  programs such as
>  .BR sshd (8),
> -in which data read from the pseudoterminal master is sent across the
> network
> +in which data read from the pseudoterminal device is sent across the
> network
>  to a client program that is connected to a terminal or terminal emulator.
>  .PP
>  Pseudoterminals can also be used to send input to programs that normally
> diff --git a/man7/pty.7 b/man7/pty.7
> index ecc1a6bec..e8b6c9539 100644
> --- a/man7/pty.7
> +++ b/man7/pty.7
> @@ -26,36 +26,39 @@
>  .SH NAME
>  pty \- pseudoterminal interfaces
>  .SH DESCRIPTION
> -A pseudoterminal (sometimes abbreviated "pty")
> +A pseudoterminal (sometimes abbreviated "pty") device pair
>  is a pair of virtual character devices that
>  provide a bidirectional communication channel.
>  One end of the channel is called the
> -.IR master ;
> +.IR "pseudoterminal device" ;
>  the other end is called the
> -.IR slave .
> +.IR "terminal device" .
>  .PP
> -The slave end of the pseudoterminal provides an interface
> +The terminal end of the device pair provides an interface
>  that behaves exactly like a classical terminal.
> -A process that expects to be connected to a terminal,
> -can open the slave end of a pseudoterminal and
> -then be driven by a program that has opened the master end.
> -Anything that is written on the master end is provided to the process
> -on the slave end as though it was input typed on a terminal.
> +A process that expects to be connected to a terminal
> +can open the terminal end of a pseudoterminal device pair and
> +then be driven by a program that has opened the pseudoterminal end
> +of the device pair.
> +Anything that is written on the pseudoterminal end is provided to the
> process
> +on the terminal end as though it was input typed on a terminal.
>  For example, writing the interrupt character (usually control-C)
> -to the master device would cause an interrupt signal
> +to the pseudoterminal end of the device pair would cause an interrupt
> signal
>  .RB ( SIGINT )
>  to be generated for the foreground process group
> -that is connected to the slave.
> -Conversely, anything that is written to the slave end of the
> -pseudoterminal can be read by the process that is connected to
> -the master end.
> +that is connected to the terminal end.
> +Conversely, anything that is written to the terminal end of the
> +device pair can be read by the process that is connected to
> +the pseudoterminal end.
>  .PP
> -Data flow between master and slave is handled asynchronously,
> +Data flow between the two ends of the device pair is handled
> asynchronously,
>  much like data flow with a physical terminal.
> -Data written to the slave will be available at the master promptly,
> +Data written to the terminal end will be available at
> +the pseudoterminal end promptly,
>  but may not be available immediately.
>  Similarly, there may be a small processing delay between
> -a write to the master, and the effect being visible at the slave.
> +a write to the pseudoterminal end,
> +and the effect being visible at the terminal end.
>  .PP
>  Historically, two pseudoterminal APIs have evolved: BSD and System V.
>  SUSv1 standardized a pseudoterminal API based on the System V API,
> @@ -75,18 +78,18 @@ option.
>  that option is disabled by default in the mainline kernel.)
>  UNIX 98 pseudoterminals should be used in new applications.
>  .SS UNIX 98 pseudoterminals
> -An unused UNIX 98 pseudoterminal master is opened by calling
> +An unused UNIX 98 pseudoterminal device is opened by calling
>  .BR posix_openpt (3).
> -(This function opens the master clone device,
> +(This function opens the pseudoterminal multiplexor device,
>  .IR /dev/ptmx ;
>  see
>  .BR pts (4).)
>  After performing any program-specific initializations,
> -changing the ownership and permissions of the slave device using
> +changing the ownership and permissions of the terminal device using
>  .BR grantpt (3),
> -and unlocking the slave using
> +and unlocking the terminal using
>  .BR unlockpt (3)),
> -the corresponding slave device can be opened by passing
> +the corresponding terminal device can be opened by passing
>  the name returned by
>  .BR ptsname (3)
>  in a call to
> @@ -110,9 +113,9 @@ For further details on these two files, see
>  BSD-style pseudoterminals are provided as precreated pairs, with
>  names of the form
>  .I /dev/ptyXY
> -(master) and
> +(pseudoterminal) and
>  .I /dev/ttyXY
> -(slave),
> +(corresponding terminal),
>  where X is a letter from the 16-character set [p\-za\-e],
>  and Y is a letter from the 16-character set [0\-9a\-f].
>  (The precise range of letters in these two sets varies across UNIX
> @@ -124,22 +127,22 @@ and
>  constitute a BSD pseudoterminal pair.
>  A process finds an unused pseudoterminal pair by trying to
>  .BR open (2)
> -each pseudoterminal master until an open succeeds.
> -The corresponding pseudoterminal slave (substitute "tty"
> -for "pty" in the name of the master) can then be opened.
> +each pseudoterminal device until an open succeeds.
> +The corresponding terminal device (substitute "tty"
> +for "pty" in the name of the pseudoterminal device) can then be opened.
>  .SH FILES
>  .TP
>  .I /dev/ptmx
> -UNIX 98 master clone device
> +UNIX 98 pseudoterminal multiplexor device
>  .TP
>  .I /dev/pts/*
> -UNIX 98 slave devices
> +UNIX 98 terminal devices
>  .TP
>  .I /dev/pty[p\-za\-e][0\-9a\-f]
> -BSD master devices
> +The BSD pseudoterminal devices
>  .TP
>  .I /dev/tty[p\-za\-e][0\-9a\-f]
> -BSD slave devices
> +The corresponding BSD terminal devices
>  .SH NOTES
>  Pseudoterminals are used by applications such as network login services
>  .RB ( ssh "(1), " rlogin "(1), " telnet (1)),
>
> --
> Michael Kerrisk
> Linux man-pages maintainer; http://www.kernel.org/doc/man-pages/
> Linux/UNIX System Programming Training: http://man7.org/training/
>


More information about the Libc-alpha mailing list