为什么伪终端和 X 写入不同的特殊文件

为什么伪终端和 X 写入不同的特殊文件

为什么伪终端从/dev/pts/{number} (并且)X-session 推断击键/dev/input/by-id/{keyboard-device-name}

我知道伪终端在 X 会话之上运行。

  • 为什么伪终端如此特殊,它有一个单独的文件位置来读取/写入随后将显示在 UI 终端视图中的数据?

  • 内核如何知道伪终端和其他应用程序之间的区别,从而写入两个不同的文件位置?

答案1

为什么伪终端如此特殊,它有一个单独的文件位置来读取/写入随后将显示在 UI 终端视图中的数据?

因为桌面上的用户输入有两种根本不同的视图。

显示服务器(X11 或 Wayland 合成器)处理全部来自硬件的输入,通过/dev/input/...libinput至少在使用时)。 X11和Wayland客户端通过各自的协议接收相应的事件。

不是 X11 和 Wayland 客户端但需要接收输入的程序是使用某种形式的模拟运行的。终端模拟器就是这样一种模拟:顾名思义,它模拟一个终端,并在这方面得到了帮助伪终端其中涉及/dev/pts/...设备。

因此,当您在终端模拟器中运行程序时,您的击键遵循以下路径:

键盘→内核→显示服务器→终端仿真器(作为高级事件)→伪终端→程序

这为最终程序提供了一种错觉,即它正在运行,其输入(和输出)连接到终端。

内核如何知道伪终端和其他应用程序之间的区别,从而写入两个不同的文件位置?

它不知道应用程序以及它们从哪里接收输入。它了解键盘并通过输入设备提供事件;另外,它知道伪终端,并允许控制程序通过它们传输事件。

相关内容