我试图了解程序如何喜欢screen
和script
控制 I/O。
我对终端、tty 等的了解来自阅读“tty demystified”文章以及我能找到的所有 SE 答案。所以据我了解,组件之间的交互大致如下:
Console(Keyboard+Screen) ---- xterm(pty master) ----- tty line discipline ---- bash/other programs(pty slave)
其中行规则在内核中,而 xterm 和 bash 在用户空间中运行。
- 这个对吗?
现在,当我们考虑像screen
,之类的程序时script
,它们是在终端(现有的 xterm)中运行的用户空间程序,但能够控制与其他程序的 I/O。文章提到这是因为他们在 xterm(现有的伪终端)内运行另一个伪终端。
这是否意味着他们开辟了一个新的
pty
主从对,控制了这对新对的主端,并且从它们启动的所有进程都运行在新的pty
从端上?例如,每次我启动一个新的“屏幕”并运行tty
命令时,它都会向我显示一个不同的/dev/pts/x
. 是否script
也以类似的方式运行?最后有人可以指出我可以在其中获得有关这些东西的更多详细信息的任何文章/书籍(找不到任何东西)?
我也想参考这个答案,虽然它很简短。