我希望实现我的内核能够监控每个进程的内存。但是,我所能做的就是打印出进程和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。我想知道是否有任何函数可以查找进程的内存。提前谢谢你。
发布于 2017-04-26 23:11:45
对于当前进程以外的进程,请使用/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 post相似,但并不完全相同。
发布于 2017-04-26 23:36:09
这是标准的错误内核代码(忽略锁定要求等)。函数名称和预期用途强烈暗示这只是一项大学作业。还有其他几个人提出了类似质量的问题。
因为每次很明显,询问的人根本没有准备好做这项工作,每次我都会问是谁给他们布置的作业,以及给他们提供了什么材料。
你能回答上面的问题吗?
谢谢。
编辑
查看以下内容,了解以下类型的代码示例有什么问题:http://codingtragedy.blogspot.com/2016/12/bad-kernel-tutorials-for-beginners.html
这个网站不适合回答与内核相关的问题(或大多数与此相关的低级问题)。恐怕你得请教你的同学们。最好是有人会确保这种类型的任务不会分配给没有准备的学生,甚至不会分配给。
https://stackoverflow.com/questions/43634144
复制相似问题