What's a psuedo-tty ? and What does the select on a pipe SLS do ?

Stanley Friesen sarima at tdatirv.UUCP
Fri Sep 28 10:28:16 AEST 1990


In article <783 at lafayet.UUCP> rob at lafayet.UUCP (Rob Freyder) writes:
>Hi Folks,
>	I have some simple questions. At least I think they might be. 8-)
>
>First, What is a psuedo-tty ?  I cant find it in any of my books or manuals.

A pseudo-tty is a pair of connected virtual devices such that one member of
the pair loks (almost) like a real tty port.  This allows the I/O of an
interactive program (like a shell or editor) to be connected to some filter
program (like a remote login demon or a terminal emulator for X windows).
Since the slave half of the pseudo-tty looks like a real tty, the shell
or editor chugs happily away, thinking it is connected to a terminal.
The filter or daemon on the master end can then perform added-value processing
without disturbing either the user or the interactive program.

[Note: the slave end is only *almost* like a real tty - this is kelling us
here, since we have a program that refuses to accept the limited simulation
as adequate, it wants the unsupported features.  I am rather upset by this,
a pty should be a full simulation of a real tty, not a partial one.]
 
>Second, Whais select() used for ?  I just found a program called tapserial
>that I want to compile and its needs select() which is broken on Xenix 2.3 ...
>So I installed the XNX141 SLS to fix it.  

select() is mechanism for polling multiple I/O ports for availability.  It is
most useful for a program that wants to read 'simultaneously' from several
input lines (such as a daemon).  It eliminates the need for an active polling
loop using non-blocking I/O by making the kernel do the work.  (Note, it is
actually a system call, or at least requires system support to work properly,
though it can be simulated at a high cost without it).

It also has a time-out feature with millisecond resolution, so it is also
often used to provide for fractional second sleeps.  (By setting the time-out
and giving it an empty list of I/O ports to check).

It is a Berkeley Unix feature.  The System V equivalent (or nearly so) is
called poll().



More information about the Comp.unix.internals mailing list