linux模块方式实现打印进程树

  • m4_320042
    了解作者
  • 905B
    文件大小
  • rar
    文件格式
  • 0
    收藏次数
  • VIP专享
    资源类型
  • 0
    下载次数
  • 2022-06-02 04:17
    上传日期
使用task_struct。 文件包括模块源码和makefile。
mypstree.rar
  • mypstree.c
    1KB
  • Makefile
    207B
内容介绍
#ifndef __KERNEL__ #define __KERNEL__ #endif #ifndef MODULE #define MODULE #endif #include <linux/kernel.h> #include <linux/module.h> #include <linux/sched.h>//struct task_struct 在这里定义 #include <linux/types.h> #include <linux/list.h> static void pchildren(struct task_struct* task,int n)//递归遍历子树 { struct list_head *pos; struct task_struct* p; int i; for(i=n;i>0;i--)printk(" ");printk("|————"); printk("%s(%d)\n",task->comm,task->pid); list_for_each(pos,&task->children)//遍历父task_struct中的children { p=list_entry(pos, struct task_struct,sibling);//往回找子task_struct,偏移相当于sibling if(p!=NULL) { n++; pchildren(p,n); n--; } } } static int mypstree_init(void) { printk("start:\n"); pchildren(&init_task,0);//&init_task得到0号进程指针 printk("end。\n"); return 0; } static void mypstree_exit(void) { printk("88~\n"); } module_init(mypstree_init); module_exit(mypstree_exit); MODULE_LICENSE("GPL"); MODULE_AUTHOR("");
评论