【发布时间】:2011-07-30 10:26:16
【问题描述】:
我想编写一个小的 Linux 内核模块,它可以显示所有正在运行的进程的 PID。 我有以下代码:
/*
* procInfo.c My Kernel Module for process info
*/
#include <linux/init.h>
#include <linux/module.h>
#include <linux/kernel.h>
/*
* The init function, called when the module is loaded.
* Returns zero if successfully loaded, nonzero otherwise.
*/
static int mod_init(void)
{
printk(KERN_ALERT "ProcInfo sucessfully loaded.\n");
return 0;
}
/*
* The exit function, called when the module is removed.
*/
static void mod_exit(void)
{
printk(KERN_ALERT "ProcInfo sucessfully unloaded.\n");
}
void getProcInfo()
{
printk(KERN_INFO "The process is \"%s\" (pid %i)\n",
current->comm, current->pid);
}
module_init(mod_init);
module_exit(mod_exit);
MODULE_LICENSE("GPL");
MODULE_AUTHOR("Rodrigo");
如您所见,我知道我必须使用 *struct task_struct* 结构来获取 PID 和进程名称,但我使用的是 current,并且我知道存在一些 double包含所有 PCB 的链接循环列表,所以主要问题是: 我需要添加什么来使用 p-next_task 和 p-prev_task 迭代这个链接的 lisk 以便 getProcInfo 工作? 谢谢!
【问题讨论】: