zoukankan      html  css  js  c++  java
  • 打印进程号(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要学还有很长的路......

  • 相关阅读:
    pycharm的一些操作指令和技巧
    Python开发:模块
    python字符编码
    Pyhton开发:Python基础杂货铺
    Python之函数
    python介绍
    记录
    HDOJ3699 A hard Aoshu Problem[暴力]
    HDOJ3697 Selecting courses[贪心]
    HDOJ4054 Hexadecimal View[编码题]
  • 原文地址:https://www.cnblogs.com/wuchaofan/p/3003902.html
Copyright © 2011-2022 走看看