当前位置: 技术问答>linux和unix
请教:如何能实现从内核层调用应用层的程序
来源: 互联网 发布时间:2015-08-17
本文导语: rt 高分酬谢! | try to use sys_execve syscall | 我不太明白你的意思,我知道从内核里是可以执行用户进程的,不过执行期间就换到用户状态了,如(init里调用execv),如果要是想...
rt
高分酬谢!
高分酬谢!
|
try to use sys_execve syscall
|
我不太明白你的意思,我知道从内核里是可以执行用户进程的,不过执行期间就换到用户状态了,如(init里调用execv),如果要是想从用户态执行的话,那只有通过系统调用。
|
想mount可以直接调内核里的sys_mount甚至是更底层的do_mount,如果还想做别的事情可以自行添加一些代码,反正源码也是可以改的嘛。
|
使用call_usermodehelper函数,在kmod.h中,实现在kernel/kmod.c中,这是内核生成一个线程去调用
execve执行用户的二进制可执行程序。在内核里是没办法执行用户的源代码级程序的。如果还不行,自己写程序,调用kernel_thread,在里面使用execve(需要转到用户空间执行)你的用户空间程序。
老兄走时啊,我费了n长时间才搞定这个问题。
execve调用不能直接用的,是不能回去的~_~
execve执行用户的二进制可执行程序。在内核里是没办法执行用户的源代码级程序的。如果还不行,自己写程序,调用kernel_thread,在里面使用execve(需要转到用户空间执行)你的用户空间程序。
老兄走时啊,我费了n长时间才搞定这个问题。
execve调用不能直接用的,是不能回去的~_~
|
说具体一点,描述一下上下文
|
实现一用户态守护进程,然后做内核和进程间通讯,由用户态的进程去调用用户态的程序。