linux核心之遍歷線性區

2021-07-04 23:14:32 字數 1006 閱讀 3323

寫本篇部落格的意思仍然是想要獲得指定程序的所有開啟檔案路徑,但是與之前的方式並不相同,

1、獲得指定程序的task_struct

2.獲得記憶體描述符mm_struct獲得線性區,根據線性區的vm_file確定該線性區指向的是檔案記憶體

#include #include #include #include #include#include#include#include#include //for o_rdonly

#include //for get_fs

#include //for path_max

#include #include module_license("gpl");

extern char *d_path(const struct path *, char *, int);

static int hello_init(void)

printk(kern_alert "get current successfully \n");

struct task_struct *task;

struct list_head *list;

int count=0;

for(list=(&(current->tasks))->next; list!=¤t->tasks; list=list->next, count++)

vma=vma->vm_next;

}task_unlock(task);

kfree(tpath);

}else

}} return 0;

}static void hello_exit(void)

module_init(hello_init);

module_exit(hello_exit);

總結:

筆者使用的環境是ubuntu 想要gedit程序開啟的檔案,可是發現通過這兩種方式,均未能獲得gedit開啟的*.c檔案,至今迷茫中。路過大神請指教....

Linux 核心快取區和write行為

unix環境高階程式設計 應用緩衝技術能很明顯的提高系統效率。核心與外圍裝置的資料交換,核心與使用者空間的資料交換都是比較費時的,使用緩衝區就是為了優化這些費時的操作。其實核心到使用者空間的操作本身是不buffer的,是由i o庫用buffer來優化了這個操作。比如read本來從核心讀取資料時是比較...

Linux之核心模組

linux核心採用的是模組化技術,這樣保證了核心的可維護性和可擴充套件性。模組化設計允許我們在需要時才將某個模組載入到核心,實現動態核心的調整。linux核心模組的命名方式通常為 模組名稱.ko 在centos 7中核心模組被集中儲存在 lib modules目錄下。對核心模組的基本操作 1 檢視核...

Linux 之緩衝區

標準i o為我們提供了3種型別的緩衝區 全緩衝區 行緩衝區 無緩衝區。1 全緩衝區 這種緩衝區預設大小為bufsiz,具體大小與系統定義有關。在緩衝區滿或主動呼叫緩衝區重新整理函式fflush 函式後,才進行真正的i o操作,普通磁碟檔案的寫操作通常使用全緩衝區訪問。from usr include...