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