two-way terminal multiplexing

Tom Judge tom at
Thu Aug 30 06:04:48 PDT 2007

Simias wrote:
> "djembe nazar" <dn77881188 at> writes:
>> I am trying to work out a way to do the following for a
>> "FreeBSD teaching environment":
>> The intention is to have two terminals, one above the other.
>> The bottom terminal shows one's own commands and output like
>> an ordinary xterm whilst the top terminal shows the commands
>> and output of a peer (such as an instructor).
>> The pupil is not allowed to enter commands into the
>> instructor's terminal, it simply shows what the instructor
>> typed and the resulting output of the commands. The same
>> is true of the reverse. The overall concept is to allow an
>> instructor to tutor a pupil over an appropriate medium such
>> as instant messaging whilst allowing the pupil to learn by
>> example with a very hands-on approach.
>> In the case of a standard 1-to-1 teaching environment, the
>> instructor would see his/her own terminal on the bottom and
>> the terminal of the pupil on the top. The pupil would see the
>> reverse (instructor's terminal above, his/her own terminal
>> below).
>>      pupil sees:            instructor sees:
>>   +-----------------+     +-----------------+
>>   | INSTRUCTOR TERM |     |    PUPIL TERM   |
>>   +-----------------+     +-----------------+
>>   |    PUPIL TERM   |     | INSTRUCTOR TERM |
>>   +-----------------+     +-----------------+
>> I do not understand how to achieve this. Is this even possible
>> given standard unix security with regards to hijacking the
>> tty devices of other users on the system?
> I think you may achieve this with GNU Screen, since it supports multi
> users sessions (look for addacl and aclchg in the screen(1) man page).
> If you want to do that by yourself, I'd use a client/server
> architecture, the instructor would start a program like script(1), but
> instead of writing to a file, it'd write to a socket, and the pupil
> would start a client version that will just read the socket and output
> what it receives. Note that it probably won't work very well if the two
> terminals have different size and/or different Termcaps (especially with
> curses apps like vi or emacs).
> It's quite trivial to implement, but maybe it won't meet your requirements.

The other option might be to use the terminal snooping option in the 
kernel.  I have never used it but it sounds like what you may want.


More information about the freebsd-hackers mailing list