zhaoyaofeng 发表于 2006-8-23 16:14:39

如何在kernel下启动程序

我想在内核代码中启动一个应用程序。该如何实现?

我看到在文件 drivers/sbus/char/envctrl.c中有如下代码:

#define __KERNEL_SYSCALLS__
static int errno;
#include <asm/unistd.
...
printk(KERN_CRIT "kenvctrld: WARNING: Shutting down the system now.\n");
if (0 > execve("/sbin/shutdown", argv, envp)) {
                printk(KERN_CRIT "kenvctrld: WARNING: system shutdown failed!\n");
                inprog = 0;/* unlikely to succeed, but we could try again */
}

可是这好像是在当前的进程中执行"shutdown"程序。
我希望能够在一个新的进程中执行所需要的程序,该如何实现?

多谢!

manioster 发表于 2006-8-30 00:50:17

有几个函数可以执行程序,他们有一个系列exec() 之类的,你可以GOOGLE一下这些函数。
这里有LINUX下常用C函数的用法http://net.pku.edu.cn/~yhf/linux_c/index.htm
另外,你最好还去看一下fork()函数的用法。这里有个好帖子http://www.chinaunix.net/jh/23/311067.html :wink: 这个帖子的推荐了好多次了.....
页: [1]
查看完整版本: 如何在kernel下启动程序