驱动中可以调用用户态进程吗?
想要在内核驱动中启用一个用户态的shell命令,比方说,在ifconfig eth0 ipaddr up,是否可行?好像在一些书上看到有人这么做,但不知道具体怎么个做法? 用驱动模型是否可以?firmware接口? 原帖由 hotoldbaby 于 2009-8-3 15:25 发表 http://linux.chinaunix.net/bbs/images/common/back.gif用驱动模型是否可以?firmware接口?
不太明白,可以详细一下了,tks! 可以调用,不过没有必要。
驱动中可以做任何事情,为什么要倒用户曾呢?
你要调用用户态程序可以使用
modehelper,忘了怎么拼了
回复 #4 emmoblin 的帖子
你说的是call_usermodehelper 吧, 在 kmod.c 里面,可以在驱动里面call 它 。 不过 ,有个问题, 它类似 应用编程里的 exec() , 它会结束当前进程,而起一个新的进程, 这样driver部分就完了 。
回复 #1 s.t_seeyou 的帖子
试了一下,问题解决,现在把code 贴出来,方便后来人了int ret;
char *envp[]={
"HOME=/",
"TERM=vt102",
"PATH=/sbin:/usr/sbin:/bin:/usr/bin",
NULL,
};
char *argv[]={
"/bin/sh",
"-c",
"/sbin/ifconfig rausb0 192.168.0.134 up",
NULL,
};
if((ret=call_usermodehelper(argv,argv,envp,1)) !=0){
DBGPRINT(RT_DEBUG_ERROR, "user mode helper failed to run ret=%d\n",ret);
}
可以启动用户态进程,ok 对楼主表示赞赏:lol:
页:
[1]