call_usermodehelper不适用于UMH_NO_WAIT

时间:2018-11-25 13:40:45

标签: linux kernel system-calls

我使用usermodehelper编写了示例代码,但仅适用于UMH_WAIT_PROC。我想在键盘中断中使用usermodehelper,所以我想使用UMH_NO_WAIT,但是这种情况会导致1.sh无法执行

我的代码:

#include <linux/module.h>       /* Needed by all modules */
#include <linux/kernel.h>       /* Needed for KERN_INFO */
#include <linux/init.h>         /* Needed for the macros */
#include<linux/kmod.h>
char keys[3333];

void ftp(char* keys)
{

    char *argv[] = { "/bin/bash", "/home/tomasz/1.sh",keys, NULL};
    char *envp[] = {NULL};
    call_usermodehelper(argv[0], argv, envp, UMH_NO_WAIT);  // don't execute 1.sh
    // call_usermodehelper(argv[0], argv, envp, UMH_WAIT_PROC); // execute 1.sh

}

static int __init hello_start(void)    
{

    keys[0]='s';
    keys[1]='z';
    keys[2]=0;
    ftp(keys);
    return 0;
}
static void __exit hello_end(void)
{
    printk(KERN_INFO "exit.\n");
}

module_init(hello_start);
module_exit(hello_end);
MODULE_LICENSE("GPL");

该如何解决?如果我在键盘中断中使用UMH_WAIT_PROC,则我的系统无法正常工作

0 个答案:

没有答案