我想在下学期之前通过一个例子来学习,并想尝试一些与操作系统一起工作的东西。
C 程序如何拦截来自操作系统的输入。我能想到的唯一例子是键盘记录器。
如何编写 C 程序以深入操作系统?
这有意义吗?
我想在下学期之前通过一个例子来学习,并想尝试一些与操作系统一起工作的东西。
C 程序如何拦截来自操作系统的输入。我能想到的唯一例子是键盘记录器。
如何编写 C 程序以深入操作系统?
这有意义吗?
基本上取决于操作系统,您需要“挂钩”到操作系统的事件机制中。操作系统中发生了不同的事件,按键就像鼠标点击一样。可以挂钩这些事件并提供一个函数,只要事件发生,操作系统就会调用该函数。
例如,参见Windows
在 Linux 上,您可以查看所有键盘的设备节点并记录接收到的事件。
这些/dev/input/event*
节点提供了一个通用接口——你必须观察它们中的任何一个对应于鼠标或键盘的接口。您需要evdev
内核模块才能使用它。
/usr/include/linux/input.h
头文件包含您需要了解的有关编程接口的大部分内容。根据我的经验,它非常简单易用。
请记住,一些 X-server 驱动程序会获取它们的设备节点并阻止所有其他应用程序获取事件,因此您可能必须更改它们的选项或使用基于 X 的接口。
我认为这是你可以在不编写内核模块的情况下在 Linux 上获得的最大程度。
编辑:
您应该意识到每个操作系统都有自己的输入子系统接口。没有跨平台的方法可以做到这一点。你到底想做什么?