当前位置: 技术问答>linux和unix
遍历所有进程
来源: 互联网 发布时间:2016-07-10
本文导语: 这个内核模块是要在加载时遍历所有的进程,可执行insmod时系统却卡住了,只有重启 求高手帮助。。。 ======================================================================== #include #include #include MODULE_LICENSE("Dual BSD/GPL"); int s...
这个内核模块是要在加载时遍历所有的进程,可执行insmod时系统却卡住了,只有重启
求高手帮助。。。
========================================================================
#include
#include
#include
MODULE_LICENSE("Dual BSD/GPL");
int show_pro(struct task_struct *ts)
{
struct task_struct *start_proc=container_of(ts->children.next,struct task_struct,parent);
struct task_struct *cur_proc=start_proc;
do
{
printk("pid=%d name=%s parent=%d",cur_proc->pid,cur_proc->comm,ts->pid);
if(cur_proc->children.next=NULL){
show_pro(cur_proc);
}
cur_proc=container_of(cur_proc->sibling.next,struct task_struct,sibling);
}while(start_proc!=cur_proc);
return 0;
}
static int __init hello_init(void)
{
show_pro(&init_task);
return 0;
}
static void __exit hello_exit(void)
{
}
module_init(hello_init);
module_exit(hello_exit);
MODULE_AUTHOR("scy");
MODULE_DESCRIPTION("Kernel App");
MODULE_ALIAS("KAPP");
求高手帮助。。。
========================================================================
#include
#include
#include
MODULE_LICENSE("Dual BSD/GPL");
int show_pro(struct task_struct *ts)
{
struct task_struct *start_proc=container_of(ts->children.next,struct task_struct,parent);
struct task_struct *cur_proc=start_proc;
do
{
printk("pid=%d name=%s parent=%d",cur_proc->pid,cur_proc->comm,ts->pid);
if(cur_proc->children.next=NULL){
show_pro(cur_proc);
}
cur_proc=container_of(cur_proc->sibling.next,struct task_struct,sibling);
}while(start_proc!=cur_proc);
return 0;
}
static int __init hello_init(void)
{
show_pro(&init_task);
return 0;
}
static void __exit hello_exit(void)
{
}
module_init(hello_init);
module_exit(hello_exit);
MODULE_AUTHOR("scy");
MODULE_DESCRIPTION("Kernel App");
MODULE_ALIAS("KAPP");
|
帮顶