如何在 C/C++ 程序中加载内核模块



我正在使用ds18b20温度传感器,我正在努力将一些python代码转换为c ++,以帮助更好地学习语言。我遇到了一个问题,我需要加载 w1-gpio 和 w1-therm 模块。我在堆栈溢出上发现了很多东西提到应该使用init_module,并且在同一线程中,其他人提到在旁边使用fork() exec()。经过大量的谷歌搜索和通读手册页,我找不到任何如何完成这些任务的例子。有人可以指出我和/或举例说明我如何使用这两种方法加载这两个模块吗?或者提供一个不涉及系统的替代方案("modprobe w1-gpio"(?

uname -a

生产:

Linux raspberrypi 4.1.13-v7+ #826 SMP PREEMPT Fri Nov 13 20:19:03 GMT 2015 armv7l GNU/Linux

我仍然认为system("modprobe ...")是这种情况的完美解决方案。不这样做只会给自己带来额外的问题。

如果您确切地知道要加载哪些内核模块,那么使用 init_module 或它的同级finit_module。但是您需要按正确的顺序加载模块。当然,需要知道保存文件的所有相关位置,他们需要什么参数等。

并且不要忘记在清理自己时颠倒delete_module的顺序。

modprobe和朋友的来源可以在这里找到:https://github.com/vadmium/module-init-tools

Insmod很短,但modproble只有2300多行代码。

最新更新