在Linux上,X服务器如何与特定的tty(例如tty7)建立关系,以便仅当该tty位于前台时X服务器才能接收输入并在屏幕上绘制?这是如何执行的?
(我之前在 Stack Overflow 上以下面所示的形式发布了这个问题,该问题已被关闭。)
我有几个问题,当有人说“X 服务器在 /dev/tty7 上运行”时,这意味着什么。我对其工作原理做了一些猜测,我希望有人能告诉我以下陈述是真是假。
- /dev/tty7 通常是 Xorg 的控制终端。
- 尽管 tty7 是 Xorg 的控制终端,但它并不以任何有意义的方式“控制”Xorg。
- Xorg 通过轮询 /dev/input/... 或类似的方式直接接收键盘和鼠标输入,而不是通过读取 /dev/tty7。尽管如此,/dev/tty7 也会接收击键,您可以通过在终端仿真器中运行“xxd -p /dev/tty7”来看到(例如)。
- Xorg 使用某些特定于硬件的接口(例如驱动程序创建的某些设备文件或内存的 I/O 映射区域)在屏幕上绘图,而不是通过写入 /dev/tty7。
- 当 Xorg 设置视频模式时,tty 驱动程序会自动停止在屏幕上绘制。这就是为什么当您按下某个键或将字符串回显到 /dev/tty7 时,您看不到它出现在屏幕上。
- 即使 tty7 在后台,Xorg 也会通过 /dev/events 接收键盘和鼠标输入,但除非 tty7 在前台,否则它会忽略它。
- 无论 Xorg 在屏幕上绘制什么,只有当 tty7 位于前台时才在监视器上可见。
- Xorg 初始化视频时(设置视频模式等)由于 tty7 处于前台,所以设置在 tty7 上生效,而不在任何其他终端上生效。