使用c列出所有进程信息

时间:2016-05-05 23:39:16

标签: c process linux-kernel

我想用pid,ppid,comm和size列出所有正在运行的进程。我有以下代码工作,除了ppid和大小,所以如何做到这一点。

- 代码 -

CacheManager singletonManager = CacheManager.getInstance();

1 个答案:

答案 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;
}