是否可以在内核模块中执行shell命令。我知道我们可以在用户空间 C 代码中使用system
子程序。
我正在调试一个存在内存泄漏问题的内核模块。在无限循环中执行 insmod 和 rmmod module.ko 后,8G RAM 的系统在几分钟内就会耗尽内存。
使用以下命令了解内存状态会很有帮助free
在调用 API 之前和之后的命令负责释放内存,这样我就可以知道 API 是否正在工作。
这就是我调试的方式。如果还有其他方法,请分享。
您可以使用call_usermodehelper
功能。请参阅如何使用它的示例LXR#1 http://lxr.linux.no/linux+v3.4.4/lib/kobject_uevent.c#L296 or LXR#2 http://lxr.linux.no/linux+v3.4.4/fs/nfs/objlayout/objlayout.c#L674.
UPD:
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);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)