我想用pid,ppid,comm和size列出所有正在运行的进程。我有以下代码工作,除了ppid和大小,所以如何做到这一点。
- 代码 -
CacheManager singletonManager = CacheManager.getInstance();
答案 0 :(得分:1)
父pid和总vm大小未在task_struct
中直接编码,您需要调用task_ppid_nr
来获取父pid,并使用task_struct->mm
来获取进程的vm大小
请尝试以下操作:
#include <linux/slab.h>
#include <linux/types.h>
#include <linux/unistd.h>
#include "sched.h"
#include "sched1.h"
int process_init(void)
{
printk(KERN_INFO "lOADING MODULE \n");
printk(KERN_INFO "PID \t PPID \t PNAME \t SIZE \n");
struct task_struct *task;
struct mm_struct *mm;
for_each_process(task)
{
mm = get_task_mm(task);
printk(KERN_INFO "%d \t %d\t %s \t %d \n",
task->pid, task_ppid_nr(task), task->comm, mm->total_vm);
}
return 0;
}