Simias wrote:
"djembe nazar" <[EMAIL PROTECTED]> 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.

Tom
_______________________________________________
[email protected] mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-hackers
To unsubscribe, send any mail to "[EMAIL PROTECTED]"

Reply via email to