<< libpt >> What the heck is it?
Guy Harris
guy at auspex.auspex.com
Fri Mar 30 06:02:03 AEST 1990
>Under System V.3.2, what does the pt library (libpt.a) do?
Supports pseudo-terminals.
>It appears to include the functions
>
> ptsname()
> grantpt()
> unlockpt()
Those are documented in the Third Edition of the System V Interface
Definition; that's the SVID for S5R4, in which the pseudo-tty support is
official. No guarantees that this *exactly* matches the S5R3.2 version,
but it's probably close, at minimum.
>and appears to be associated with the device
>
> /dev/ptmx
A "clone" device, which you use to get a pseudo-tty master. You open
"/dev/ptmx" and either:
it fails, e.g. because there aren't any pseudo-ttys left;
or
it succeeds, and the resulting file descriptor refers to some
not-already-in-use pseudo-tty master.
(I.e., if process A opens "/dev/ptmx", and then process B opens it, the
two file descriptors do *NOT* refer to the same device; they refer to
different pseudo-ttys. This avoids the grot needed with BSD-flavored
pseudo-ttys, in which the program has to try opening all the pseudo-tty
masters....)
>and with files of the form
>
> /dev/ptsNNN
Those are the pseudo-tty slaves; there's an "ioctl" you do on the master
side to find out which pseudo-tty master it is, and you use that to get
the name of the slave. (Actually, "ptsname()" does it for you.)
>It is used throughout the X11R4 Streams code, but I can find no references
>for this stuff anywhere. Clues?
The X11R4 STREAMS code uses pseudo-ttys for local connections to the
server, since S5R3 doesn't have UNIX-domain sockets. Arguably a hack,
but....
>I can deduce that mutual exclusion,
If you're thinking of "unlockpt()", it's less mutual exclusion than a
technique to keep other processes from opening a slave device that
hasn't yet been properly set up by the process handling the master.
>slave names,
Yup; "ptsname()", to quote the "ptsname(BA_LIB)" page in the SVID,
"returns the name of the slave pseudo-terminal driver associated with a
master pseudo-terminal device."
More information about the Comp.unix.questions
mailing list