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

jos*_*shu 2 c c++ python kernel-module raspberry-pi

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

uname -a
Run Code Online (Sandbox Code Playgroud)

产生:

Linux raspberrypi 4.1.13-v7+ #826 SMP PREEMPT Fri Nov 13 20:19:03 GMT 2015 armv7l GNU/Linux
Run Code Online (Sandbox Code Playgroud)

Mat*_*son 5

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

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

delete_module当您自己清理时,请不要忘记颠倒顺序。

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

insmod 相当短,但 modproble 代码略多于 2300 行。