打印进程号(pid)

  我们知道linux是模块化的内核。实现模块、利用kernel提供的接口,

首先了解写模块的基本框架。下面的c文件就是最基本的框架,

当然还有怎样添加一些符号变量,利用的module_param,没用上。

  c文件printPid.c

 1 #include <linux/kernel.h>
 2 #include <linux/module.h>
 3 #include <linux/init.h>
 4 #include <linux/sched.h>
 5 #include <linux/list.h>
 6 
 7 static __init int printPid(void) //安装模块函数
 8 {
 9     struct task_struct *task,*p;
10     struct list_head *ps;
11     int count=0;
12     printk("begin.\n");
13     task=&init_task;
14     list_for_each(ps,&task->tasks)
15     {
16         p=list_entry(ps,struct task_struct,tasks);
17         count++;
18         printk("%d\t%s\n",p->pid,p->comm);
19     }
20     printk("Process counts:%d\n",count);
21     return 0;
22 }
23 static __exit void exitPid(void)  //卸载函数
24 {
25     printk("exit!\n");
26 }
27 module_init(printPid); //实现的函数必须放入其中
28 module_exit(exitPid);

makefile:

1 KDIR:=/lib/modules/$(shell uname -r)/build
2 PWD:=$(shell pwd)
3 all:
4     $(MAKE) -C $(KDIR)  M=$(PWD) modules
5 clean:
6     $(MAKE) -C $(KDIR) M=$(PWD) modules clean
7     rm -f *.o    
8 
9 obj-m   :=pid.o 

 

make后会生成pid.ko文件。

然后用这几个命令:

#安装模块
sudo insmod pid 

#显示日志信息
dmesg

#显示挂载的挂载的所有模块
lsmod

#卸载
sudo rmmod pid 

  这仅仅是比较简单的,kernel要学还有很长的路......

 

转载于:https://www.cnblogs.com/wuchaofan/archive/2013/04/07/3003902.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值