我写一个C守护进程,它取决于两个内核模块的存在,以完成其工作。 该方案不直接使用这些(或任何其他)模块。 它只需要他们存在。 因此,我想以编程方式检查是否这些模块都已经加载与否,以提醒用户在运行时。
在我开始做的事情一样解析/proc/modules
或lsmod
输出,做一个效用函数已经存在的地方? 喜欢的东西is_module_loaded(const char* name)
;
我敢肯定,这已被问过。 不过,我觉得我缺少正确的字词进行搜索这一点。
我写一个C守护进程,它取决于两个内核模块的存在,以完成其工作。 该方案不直接使用这些(或任何其他)模块。 它只需要他们存在。 因此,我想以编程方式检查是否这些模块都已经加载与否,以提醒用户在运行时。
在我开始做的事情一样解析/proc/modules
或lsmod
输出,做一个效用函数已经存在的地方? 喜欢的东西is_module_loaded(const char* name)
;
我敢肯定,这已被问过。 不过,我觉得我缺少正确的字词进行搜索这一点。
您可以使用popen
和lsmod | grep
lsmod | grep
绝招:
FILE *fd = popen("lsmod | grep module_name", "r");
char buf[16];
if (fread (buf, 1, sizeof (buf), fd) > 0) // if there is some result the module must be loaded
printf ("module is loaded\n");
else
printf ("module is not loaded\n");
有没有这样的功能。 事实上,lsmod的(源代码lsmod.c
)在它下面那行,引领你的解决方案:
file = fopen("/proc/modules", "r");
还有一个过时query_module
但它似乎只在内核头文件中存在的这些天。