Doing it right would have required the Unix tty driver to track
the entire current screen state rather than just maintaining a line
buffer, and to know about terminal types at kernel level (possibly
with help from a daemon process) so it could do restores properly when
a suspended process is foregrounded again. A consequence of doing it
wrong is that the Unix kernel can't detach a session, such as an
xterm or Emacs
job, from one terminal and re-attach it to another (which could be of
a different type).
As Unix usage has shifted to X displays and terminal emulators,
job control has become relatively less important, and this issue does
not have quite the force it once did. It is still annoying that there
is no suspend/attach/detach, however; this feature could be useful for
saving the state of terminal sessions between logins.
A common open-source program called
screen(1)
solves several of these problems.[158]
However, since it has to be called explicitly by the user, its
facilities are not guaranteed to be present in every terminal session;
also, the kernel-level code that overlaps with it in function has not been
removed.
[an error occurred while processing this directive]