簡體   English   中英

Linux中每個進程的內存監視

[英]Memory Monitoring for each process in linux

我想實現我的內核,以便能夠監視每個進程的內存。 但是,我所能做的就是只打印出進程和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" );

該文件將包含有關進程的內存分配(虛擬,常駐等) 信息。有關詳細信息,請參見/ proc上的man7頁面

這與這篇文章相似但不相同。

這是標准的錯誤內核代碼(忽略鎖定要求等)。 函數名稱和預期用途強烈暗示這只是大學分配。 還有其他一些人提出了類似質量的問題。

每次很清楚,詢問的人從根本上都不准備從事這項工作,因此每次我詢問誰給他們分配任務以及他們提供了什么材料時。

你能回答以上嗎?

謝謝。

編輯

請參閱此文章以大致了解此類代碼示例的問題: http : //codingtragedy.blogspot.com/2016/12/bad-kernel-tutorials-for-beginners.html

該網站不適合與內核相關的問題(或與此相關的最底層的問題)。 恐怕您將不得不咨詢同學。 最好是,盡管有人會確保不會將這類任務分配給沒有准備的學生,甚至根本不會分配給沒有准備的學生

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM