From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on dcvr.yhbt.net X-Spam-Level: X-Spam-Status: No, score=-4.1 required=3.0 tests=AWL,BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,MAILING_LIST_MULTI, SPF_HELO_PASS,SPF_PASS shortcircuit=no autolearn=ham autolearn_force=no version=3.4.2 Received: from sourceware.org (server2.sourceware.org [8.43.85.97]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) by dcvr.yhbt.net (Postfix) with ESMTPS id 2468D1F5AE for ; Wed, 29 Jul 2020 16:31:30 +0000 (UTC) Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id 16E75388C028; Wed, 29 Jul 2020 16:31:29 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 16E75388C028 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sourceware.org; s=default; t=1596040289; bh=FSnBUirJlvKOdERC+FEDAflm988Bd3MekFU5PwBYgqw=; h=References:In-Reply-To:Date:Subject:To:List-Id:List-Unsubscribe: List-Archive:List-Post:List-Help:List-Subscribe:From:Reply-To:Cc: From; b=UkJE0iyCJk82WWXyxHMT1ljuaUAAMSWYaofg99oPKIwsaANgNQVvHNOiS+81RLZA/ NrUHBVjsIhhjCzAeYIJSjKPtkYHishJyiDxiHDKk5WpzGYp7tx1632X6GmOsi/gwH0 VAbjKKDcuqdkFjM2TTLElPSasQAtCXD+jdBDgWLM= Received: from mail-lf1-x142.google.com (mail-lf1-x142.google.com [IPv6:2a00:1450:4864:20::142]) by sourceware.org (Postfix) with ESMTPS id D4774388C022 for ; Wed, 29 Jul 2020 16:31:21 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.3.2 sourceware.org D4774388C022 Received: by mail-lf1-x142.google.com with SMTP id i19so13365317lfj.8 for ; Wed, 29 Jul 2020 09:31:21 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=4pVMtbss2bCk2DAFD43Ao5KHR/1LRRs6Ml3X1GP0dP0=; b=E+EdkRYQ46pvrRW/eQ1xDown8R7aHrcS/UYdz+Ywiw9FuApwVm/mEQY4vXg/6Vqu7J WdV4lh/rPhuEBUe/9EsVF8sHX9Y+YaIJoMJOilEgv0To/TtsVAMWnN0Di43OcEWTVY2E jNtaiWKnAOIDu6o0AVNpsSocTBcKqbuChli204sO/1+hDZqrCxbg6KKZ2qoryM1lrlJZ u/vo8Kfjq5dw+x40UyDiulIocqC9U/yiSgZRQYpvvu1c9jV1AHZ3atG1iBIqsbZ2VmtN WxBOufYI840Hrjvr/J6LiK3b4SAB5YltE2kxFeMC/85QAq4OE38OwWZVAsPfpzeWS1e7 xu6w== X-Gm-Message-State: AOAM5317X1IHhqNaaZh11L0v0SUfduh4yq0QbPP8WWabjkTMMgBHHkvZ VHmskxXO7CKOiFCJfF1O1hJZd2+rxjo00geUVK7kaw== X-Google-Smtp-Source: ABdhPJwJoCQfJr7RhBkFg+G8x2Ayw/EDhDV/Dta3xrO5Jk0d/EoECcQ6oNmQhRtHEagDwNfInYacLAPIFMXQY266XMQ= X-Received: by 2002:a19:710:: with SMTP id 16mr17430506lfh.171.1596040280096; Wed, 29 Jul 2020 09:31:20 -0700 (PDT) MIME-Version: 1.0 References: In-Reply-To: Date: Wed, 29 Jul 2020 09:31:08 -0700 Message-ID: Subject: Re: [RFC PATCH] Replacing "master-slave" terminology for pseudoterminals To: "Michael Kerrisk (man-pages)" Content-Type: text/plain; charset="UTF-8" X-Content-Filtered-By: Mailman/MimeDel 2.1.29 X-BeenThere: libc-alpha@sourceware.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Libc-alpha mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , From: enh via Libc-alpha Reply-To: enh Cc: Florian Weimer , linux-man , Linux API , "libc-alpha@sourceware.org" , Joseph Myers Errors-To: libc-alpha-bounces@sourceware.org Sender: "Libc-alpha" 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 > 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 > Signed-off-by: Michael Kerrisk > > 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 > .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 > .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 > .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/ >