|
|
1.1 ! root 1: .SH ! 2: Terminal Emulation ! 3: .PP ! 4: The current terminal emulator for X (\fIxterm\fP) is a client application, ! 5: in principle similar to any other application. ! 6: In practice, \fIxterm\fP is ! 7: probably the most complex and least graceful part of the package. ! 8: Pseudo teletypes (hereafter called pty's) are used to ! 9: implement this in 4.2BSD. ! 10: As currently implemented, ptys consist of a device driver which presents ! 11: a terminal on one side and a master controlling device on the other side. ! 12: Data is looped back from one side to the other, with full terminal ! 13: processing occurring (tab expansion, cooked/raw mode, etc.) ! 14: .PP ! 15: These present a number of problems: ! 16: 1) pty's are a limited resource. ! 17: Typical systems have 16 or 32 ptys. ! 18: On a single user machine, ! 19: this limit is seldom reached, ! 20: but on a timesharing machine it can be inconvenient. ! 21: 2) Since they appear statically in the file system, protection ! 22: on the tty/pty pairs can be a problem. ! 23: A previous process that terminates unexpectedly can leave the pty ! 24: in an incorrect state. ! 25: \fIXterm\fP is the only application that must run set user id to root ! 26: to guarantee it can make the ! 27: tty/pty pair properly accessible ! 28: and to set ownership on the slave to the user. ! 29: .PP ! 30: The net result is that \fIxterm\fP is the most ! 31: .UX ! 32: dependent ! 33: (and least likely to ! 34: port between ! 35: .UX ! 36: implementations) of any of the X clients currently existing. ! 37: Dennis Richie's [3] stream mechanism appears to eliminate ! 38: most of these problems by allowing stacking of terminal processing on ! 39: IPC.
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.