gpt4 book ai didi

c - linux中每个进程的内存监控

转载 作者:太空宇宙 更新时间:2023-11-04 12:29:39 25 4
gpt4 key购买 nike

我想实现我的内核,以便能够监控每个进程的内存。但是,我所能做的就是只打印出进程和pid。我找不到可以帮助监控内存的功能。这是我在内核中实现的代码。我使用 Linux 内核版本 4.11.0-rc7。

#include <linux/kernel.h>
#include <linux/init.h>
#include <linux/resource.h>
#include <linux/sched.h>
#include <linux/syscalls.h>

asmlinkage long sys_listProcessInfo(void){
struct task_struct *process;
struct rusage usage;
int i = 0;
for_each_process(process){
if(i%10 == 0){
printk("Process %s\n PID: %ld\n",process->comm,(long)task_pid_nr(process));
i++;
}
}
return 0;
}

这个只能查看进程和pid。我想知道是否有任何函数可以查找进程的内存。提前谢谢你。

最佳答案

对于当前进程以外的进程,使用/proc 文件系统。

  char fName[32]; // you should really only need 24
sprintf(fName, "/proc/%d/status", pid);
FILE* status = fopen(fName , "r" );

该文件将包含有关进程内存分配(虚拟、驻留等)的信息。有关详细信息,请参阅 man7's page on /proc

这与 this 帖子相似但不完全相同。

关于c - linux中每个进程的内存监控,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43634144/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com