终端文件和终端屏幕的区别

rub*_*buc 5 terminal tty

我最近发布了一个关于终端的问题,这似乎值得自己提出问题。如果TTY这将是与终端的代名词,仅仅是设备驱动程序/设备文件本身,什么提供了实际的界面到终端,又是什么呢叫什么?我不是指任何方面的 gui,我指的是打印和阅读文本的实际区域(在虚拟终端或可能的伪终端中)。 这是否被视为终端的一部分?这些是否以某种方式由内核控制?基本上,如果有人想编写一个控制台程序,比如 gnome-terminal(甚至是虚拟终端),是否有某种基于内核的小部件/接口来接受输入和输出?基本上是tty(即/dev/tty)只是一个文件,或者它是否包含显示输出(以各种颜色和权重)并从键盘读取所需的代码。

这是正确的:我在这里找到了“终端”、“外壳”、“tty”和“控制台”之间的确切区别是什么?也就是说 tty 是终端的同义词。这就是让我困惑的地方。我认为要模拟终端或提供终端,需要终端驱动程序 (tty) 和终端显示和交互部分(类似于 xterm)。因此,tty 本身只是输入和输出的驱动程序,而从 tty 显示和读取文本的内容类似于 xterm?将“/dev/tty 称为终端驱动程序”也正确吗?同样,当我说 xterm 时,我指的是 $TERM 变量的值。

另一个想法(让我知道这个想法):tty 文件是终端或当今终端模拟器与外壳之间的连接的同义词。现在它们都在同一个盒子里,但原始终端将是今天的终端仿真器(显然),但 tty 或 tty 文件有点像终端和外壳/操作系统之间的串行连接。这些天在我看来,终端模拟器是一个用于与 /dev/tty... 文件交互的环境/窗口,而 shell 位于另一侧?那么写入 /dev/tty 文件就像写入或读取串行端口一样?我假设这不是它的工作原理,任何帮助将不胜感激:-(。

Arc*_*ege 7

最初,“tty”有两个定义:硬件(现在是模拟器)和驱动程序(通过 /dev/pty* 或 /dev/tty* 连接)。

硬件/模拟器负责:

  • 获取数据流并呈现它;这包括解释“向左移动光标”、“闪烁光标”、“清屏”等控制序列,尽管这些控制序列在制造商之间通常有所不同。
  • 发送用户键入的键的键码;其中大部分是标准 ASCII 字符,但某些终端甚至为标准按键发送专有按键代码。

“tty”驱动程序负责:

  • 以原始或规范模式管理缓冲;例如,缓冲一行字符直到Enter按下。
  • 管理控制流;例如能够使用 / 停止/Cntl-s继续Cntl-q
  • 如果适用,将专有键码转换为标准 ASCII。
  • 拦截某些控制字符(如Cntl-cBackspace)并对其进行适当处理(在 a 上发送 SIGINTCntl-c或在Cntl-d.
  • 例如,如果echo关闭字符的规范显示,则不会将反馈(键入的字符)发送回终端。

terminfo 和 termcap 数据库管理应为操作发送哪些终端控制字符(例如“清屏”)。这些控制序列不是由驱动程序解释的,而是由硬件/仿真器解释的。