脚本之家,脚本语言编程技术及教程分享平台!
分类导航

Python|VBS|Ruby|Lua|perl|VBA|Golang|PowerShell|Erlang|autoit|Dos|bat|shell|

服务器之家 - 脚本之家 - shell - 利用kernel提供的接口打印进程号(pid)

利用kernel提供的接口打印进程号(pid)

2022-12-22 14:24脚本之家 shell

我们知道linux是模块化的内核。实现模块、利用kernel提供的接口,首先了解写模块的基本框架。下面的c文件就是最基本的框架,当然还有怎样添加一些符号变量,利用的module_param,没用上

c文件printPid.c

 

复制代码 代码如下:


#include <linux/kernel.h>
#include <linux/module.h>
#include <linux/init.h>
#include <linux/sched.h>
#include <linux/list.h>

 

static __init int printPid(void) //安装模块函数
{
    struct task_struct *task,*p;
    struct list_head *ps;
    int count=0;
    printk("begin.\n");
    task=&init_task;
    list_for_each(ps,&task->tasks)
    {
        p=list_entry(ps,struct task_struct,tasks);
        count++;
        printk("%d\t%s\n",p->pid,p->comm);
    }
    printk("Process counts:%d\n",count);
    return 0;
}
static __exit void exitPid(void)  //卸载函数
{
    printk("exit!\n");
}
module_init(printPid); //实现的函数必须放入其中
module_exit(exitPid);

 

make后会生成pid.ko文件。

然后用这几个命令:

 

复制代码 代码如下:


#安装模块
sudo insmod pid

 

#显示日志信息
dmesg

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

#卸载
sudo rmmod pid

 

延伸 · 阅读

精彩推荐