c - 在内核模块中执行shell命令

标签 c linux linux-kernel driver

是否可以在内核模块中执行 shell 命令。我知道我们可以使用 system 子例程在用户空间 C 代码中完成它。
我正在调试有内存泄漏问题的内核模块。在无限循环中执行 insmod 和 rmmod module.ko 后,系统在 8G RAM 的情况下在几分钟内内存不足。
在调用负责释放内存的 API 之前和之后使用 free 命令了解内存状态会很有帮助,这样我就可以知道 API 是否正常工作。
这就是我调试的方式。如果有任何其他方法,请分享。

最佳答案

您可以使用call_usermodehelper 函数。在 LXR#1 查看如何使用它的示例或 LXR#2 .

更新:

argv[0] = "/bin/bash";
argv[1] = "-c";
argv[2] = "/usr/bin/free";
argv[3] = NULL;

envp[0] = "HOME=/";
envp[1] = "TERM=linux";
envp[2] = "PATH=/sbin:/usr/sbin:/bin:/usr/bin";
envp[3] = NULL;

call_usermodehelper(argv[0], argv, envp, UMH_WAIT_EXEC);

关于c - 在内核模块中执行shell命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11193648/

相关文章:

linux-kernel - Linux伪目录触发错误 "no such file or directory"

c - 僵尸进程在其父进程死亡后会去哪里?

c - C 中的通用结构,用于读取(几乎)任意 txt 数据行

我们可以减少 ESP IDF 锅炉板尺寸吗?

c++ - perf 输出中的奇怪字符...

python - scrapy:错误:处理错误 {'cat':[u'alt'], 'man':[u'two']}

linux - 分析接管原始磁盘的 vmcore

c - MUMPS - 在调用 MPI_INIT 之前调用 MPI_Comm_f2c() 函数

c - 使用结构数组创建 "card"的函数

linux - bash 脚本错误 - 为变量赋值