call_usermodehelper使用实例

#define UMH_WAIT_PROC  1       

  char * argv[3];

        argv[0] = "/sbin/mdev";
        argv[1] = "-s";
        argv[2] = 0;
        if (CallUserApp(argv)< 0) 
        {
            printk("mdev -s  failed\n");
            break;

        }


int  CallUserApp(char * argv[])
{
    int ret;
    char *envp[3];


    /*  minimal command environment taken from cpu_run_sbin_hotplug */
    envp[0] = "HOME=/";
    envp[1] = "PATH=/sbin:/bin:/usr/sbin:/usr/bin";
    envp[2] = NULL;


    if (!argv || !argv[0])
    {
        printk( "%s argument is incorrect\n", __func__);
        return -1;
    }
    ret = call_usermodehelper(argv[0], argv, envp, UMH_WAIT_PROC);
   
    if (ret < 0) {
        printk("running user helper \"%s \" failed %d\n", argv[0], ret);
    }
    return ret;
}



static inline int call_usermodehelper(char *path, char **argv, char **envp, enum umh_wait wait);
path --- 用户空间所要启用的应用程序路径,如:"/sbin/hotplug",那么hotplug应用程序就会被内核加载启用
argv --- 传递给启用了的用户空间应用程序的参数argv
envp --- 传递给启用了的用户空间应用程序的环境变量envp,类似int main(int argc, char *_argv[])模式
wait --- 调用call_usermodehelper的内核程序是否等到被exec的用户空间应用程序,

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值