c - 谁在 linux 内核中调用 tty_open()?
问题描述
对于鼠标、键盘和操纵杆驱动程序,它可能会调用“打开”然后使用这些驱动程序。
(当我在 VirtualBox 中检查 CentOS 7(仅限文本模式)时,执行 lsof /dev/input/event2 (键盘)后我没有看到 X,但我的键盘仍在工作)
tty_open() 怎么样?
根据调用跟踪,我们可以大致知道顺序:(至少,我们知道有人叫 'sys_open' ) https://bugzilla.redhat.com/show_bug.cgi?id=630464
但是,我还是不知道谁叫'开'?
解决方案
当我在 VirtualBox 中检查 CentOS 7,仅文本模式时,执行 lsof /dev/input/event2 (键盘)后我没有看到 X,但我的键盘仍然有效
那是因为您使用虚拟控制台,然后是/dev/ttyN
设备之一。这些直接连接到内核本身内部的 Linux 输入事件子系统(通过vt
模块);基本上所有类似键盘的设备都充当当前活动虚拟终端的输入。
X 本身使用一个虚拟控制台,以便内核可以在它和任何基于文本的虚拟控制台之间切换。
怎么样
tty_open()
?
如果您运行sudo lsof /dev/tty[0-9]
,您可以看到哪些进程正在访问虚拟控制台。
名称中带有的进程getty
是提供登录终端的进程。(与串行终端一起使用的非常相似;事实上,许多 getty 程序可以很好地处理虚拟控制台和串行终端。)当您登录时,getty 启动login
(程序!),然后启动默认为该用户定义的 shell(请参阅getent passwd username
;它是最后一个字段,并且必须是/etc/shells
允许的字段)。
Ctrl内核本身支持通过++切换到不同的虚拟控制台(F1 用于 tty1,F2 用于 tty2,依此类推)Alt。Fn如果您使用合适的图形驱动程序,您甚至可以在 Xorg 和虚拟控制台之间切换。(通常,Xorg 在 tty6 或 tty7 上运行,但这因发行版而异。)Ctrl+ Alt+←</kbd> and Ctrl+Alt+→</kbd> can also usually be used to switch to the previous or next virtual console.
推荐阅读
- sql - 以分钟为单位的 Teradata 时间戳减法
- python - 在工作线程/循环中运行异步函数
- python - 将输入传递给 json 以打开正确的 json 文件
- python - PyAutoGui 图像识别问题
- vb.net - Visual basic:我的日历搜索只搜索一年中的第一个月而不是实际月份
- python - 如何让 p5(用 Python 处理)在 Google Colab 中显示?
- django - Django模板更新不刷新
- java - 我正在为我的后端使用 Spring Boot 框架。使用 mysql 作为数据库,使用 tomcat 作为 Web 服务器 War 文件不起作用
- r - 使用用户生成的函数对数据框的 2 列进行排序,使 1 列的值小于相应列
- google-apps-script - 将 OLDVALUE 复制到新的 CELL