Date: Thu, 30 Aug 2007 16:07:53 +0200 From: Simias <simias.n@gmail.com> To: Tom Judge <tom@tomjudge.com> Cc: freebsd-hackers@freebsd.org, djembe nazar <dn77881188@googlemail.com> Subject: Re: two-way terminal multiplexing Message-ID: <86tzqhxghy.fsf@simias.hd.free.fr> In-Reply-To: <46D6C051.5090101@tomjudge.com> (Tom Judge's message of "Thu\, 30 Aug 2007 14\:04\:17 %2B0100") References: <b7a18f790708300423o5cb56551lf5b409698c8d1e32@mail.gmail.com> <86d4x52ovt.fsf@simias.hd.free.fr> <46D6C051.5090101@tomjudge.com>
next in thread | previous in thread | raw e-mail | index | archive | help
Tom Judge <tom@tomjudge.com> writes: > Simias wrote: >> "djembe nazar" <dn77881188@googlemail.com> 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 > Oh and I just thought about this quick solution: $ mkfifo foo $ script -f foo This will create a fifo called "foo" in the current directory and put the output of script(1) in it. Then on an other terminal you can $ cat foo To see what's happening in the first terminal. However, you'll probably still have strange results if both terminals are not identical. -- Simias
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?86tzqhxghy.fsf>