以编程方式检查运行时是否存在Linux内核模块

我正在编写一个C守护进程,它依赖于两个内核模块的存在才能完成它的工作.该程序不直接使用这些(或任何其他)模块.它只需要它们存在.
因此,我想以编程方式检查这些模块是否已加载,以便在运行时警告用户.

在我开始执行诸如解析/ proc / modules或lsmod输出之类的操作之前,某个实用程序函数是否已经存在?
类似于is_module_loaded(const char * name);

我很确定以前曾经问过这个问题.
但是,我认为我错过了正确的搜索条件.

你可以使用popen和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");
翻译自:https://stackoverflow.com/questions/12978794/programmatically-check-whether-a-linux-kernel-module-exists-or-not-at-runtime

转载注明原文:以编程方式检查运行时是否存在Linux内核模块