为什么内核模块不运行我的python脚本?

时间:2019-05-27 14:54:38

标签: c linux kernel kernel-module

我知道我们可以使用call_usermodehelper函数从内核模块调用用户空间。

原型 call_usermodehelper(const char * path,char ** argv,char ** envp,int wait)

哪里

const char * path是用户模式可执行文件的路径

char ** argv是进程的arg向量

用于处理的char ** envp环境

int等待是某种枚举

当我尝试以这种方式运行python脚本时

#include <linux/module.h>
#include <linux/kernel.h>
#include <linux/fs.h>
#include <linux/uaccess.h>
#include <linux/kmod.h>

MODULE_LICENSE("GPL");
static int __init mpc_init(void) {


char *argv[]= {"/bin/bash","-c","/dir1/dir2/file.py",NULL};
static char *envp[]={
    "SHELL=/bin/bash",
    "HOME=/home/pi",
    "TERM=xterm", 
               "PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/    local/games:/usr/games",NULL};

printk(KERN_INFO "yes");

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

}

static void __exit mpc_exit(void) {       
    printk(KERN_INFO "no");
}

module_init(mpc_init);
module_exit(mpc_exit);

我看到可以创建一个进程,但是它很快就会被杀死。

也许我的模块需要分配内存?

0 个答案:

没有答案