是否可以在内核模块中执行 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/