日期:2014-05-16  浏览次数:20604 次

内核态怎么杀死一个知道名字的进程?
我这边已经实现了遍历所有进程,找出我需要的进程:

C/C++ code

int process_cnt=0;
struct task_struct *task = &init_task;  // 全局进程列表
struct task_struct *p;
struct list_head *pos;

read_lock(&tasklist_lock);
list_for_each(pos,&task->tasks)
{
    p = list_entry(pos, struct task_struct, tasks);
    process_cnt ++;
    os_printf("%d--->%s\n", p->pid,p->comm);
}

read_unlock(&tasklist_lock);
os_printf("the number of process is:%d \n", process_cnt);



现在需要把指定名字的一些进程杀掉。
1. 尝试了kill,这个接口是用户态加载了glibc才能用的,因此不行!
2. 尝试了sys_kill,结果加载的时候出现sxgt_xct: Unknown symbol sys_kill!

linux内核版本: linux-2.6.30

----- 
请教下各位,其他还有什么办法能够达到我的目的?



------解决方案--------------------
反正得kill
------解决方案--------------------
force_sig(SIGKILL, int pid);这个也可以,pid就是进程号
------解决方案--------------------
发信号
------解决方案--------------------
给进程发信号