job control

Moderator, John Quarterman std-unix at ut-sally.UUCP
Fri Oct 10 02:25:20 AEST 1986


From: cbosgd!cbosgd.ATT.COM!mark at seismo.css.gov (Mark Horton)
Date: Thu, 9 Oct 86 01:30:59 edt
Organization: AT&T Bell Laboratories, Columbus

I've made significant use of four different sorts of systems
for multiplexing, so hopefully I can provide some feedback on
their relative merits, from a user's point of view.

(1) True windows, such as a 5620, Sun, UNIX PC, etc.  Each window
acts like a terminal.  This is unquestionably the best, but it
requires special hardware, and is an area that needs to be
standardized.

(2) A dumb-terminal window manager as Henry describes.  I've written
such a window manager; on a system that has ptys, select, and a smart
curses package, it's easy (my code is only 700 lines.)  It runs on both
4.2BSD and System V, provided that all three ingredients are present.
This package runs about as well as you could hope for, (the buffering
and ioctl problems Henry mentions are solved using ptys, and it doesn't
eat up much CPU time, and all my windows are the full 80 cols wide)
and I have a 60 line terminal so there's really room for two or three
windows.  I use this rarely, because I dont' like the "mushy" feeling I
get from the screen management layer.

(3) Berkeley job control.  Henry may think this is ugly, but from a user's
point of view, if you can't have a real bitmapped display, this is the
next best thing.  I strongly prefer it to (2).

(4) System V shell layers.  I don't use this very often, it's just not
very powerful and awfully inconvenient.  It can't pop you out from any
program that runs in raw mode, such as cu or rlogin, because there's
no way for a program to suspend itself.  rlogin really NEEDS to suspend
output in a non-window environment, otherwise your screen will be a mess.

I should mention that my major use of multiplexing is to switch between
rlogins to various other systems on our LAN, and a few local applications
such as vi, mail, and news.  For situations where I really need two windows
(e.g. developing a network client and server) I strongly prefer to do it
on a true window system.  It is possible that others, running other mixes
of applications, will feel differently.

My recommendation is, however, similar to Henry's, for the standard.
I don't think the dumb terminal window manager is the answer, but I
think it's clear we don't have the best answer yet, in general.  I do
think that certain things should be standardized:

(a) termio, or at least the subset that's commonly used.  You could always
    put in a few high level subroutines like the cbreak/nocbreak echo/noecho
    erasechar/killchar/baudrate routines in curses, just to provide a
    portable interface.
(b) an ioctl to find out the current window size, in chars and pixels.
(c) a pty-like mechanism.  (Streams may be a viable candidate here, or
    Illinois/Berkeley ptys might be expedient.)
(d) a software-multiplexing mechanism, like select.

	Mark

Volume-Number: Volume 7, Number 40



More information about the Mod.std.unix mailing list