- 论坛徽章:
- 0
|
本帖最后由 wang_nets 于 2012-12-04 16:06 编辑
我想在内核每次调用sys_init_module系统调用时,创建一个文件,并将lsmod的输出信息保存到这个文件当中。- static int execute(const char *name)
- {
- int ret;
- char *envp[] = {
- "HOME=/",
- "TERM=linux",
- "PATH=/sbin:/usr/sbin:/bin:/usr/bin",
- NULL
- };
- char *argv[] = {
- "/bin/bash",
- "-c",
- (char *)bhname,
- NULL
- };
- if( ( ret = call_usermodehelper(argv[0], argv, envp, UMH_WAIT_PROC) ) != 0 )
- printk(KERN_ERR"run user application <%s> failed", bhname);
- return ret;
- }
- static int create_view(int cmd)
- {
- int ret;
- switch( cmd )
- {
- case CREATE_MODULE_VIEW:
- {
- ret = execute("touch /home/test_file;lsmod > /home/test_file");
- if(ret != 0)
- printk(KERN_ERR"create the module failed");
- }
- break;
- ...
- default:
- ret = -ENOSYS;
- break;
- }
- return ret;
- }
复制代码 以上代码编译成内核可以执行,完全没问题。但是写到内核里,一运行就死机。请问各位是什么原因? |
|