用户空间Linux中的硬件识别

我希望能够在C中检查我的Linux机器硬件。如何获取在C中的dmesg中显示的信息? 例如,对于键盘input消息:AT Translated Set 2 keyboard as / devices / platform / i8042 / serio0 / input / input0我想在我的程序中得到标签AT Translated Set 2和path/ devices /平台/ i8042 / serio0 /input/ INPUT 0。 任何想法如何做到这一点?

阿米特

你也可以看看/ proc中的文件内容。

/ proc / version,/ proc / ioports,/ proc / iomem,/ proc / meminfo等等都有很多信息。

/ proc / bus下的文件有关于系统硬件设备的附加信息。

我还建议查看usbutils和pciutils的源代码来获取来自lsusb和lspci命令的输出。

它使用klogctl调用。

最好的事情是自己阅读源代码,可以在这里下载: util-linux

你会想使用libhal,并连接到hal守护进程。 如果HAL不存在,请查找已安装的sysfs分区。 检出/ sys / devices,或通过/ sys / bus回退。

如果HAL和sysfs都不可用,请重新考虑您的方法或限制您的范围。