Linux proc檔案系統

2021-07-11 22:21:48 字數 2977 閱讀 9941

proc檔案系統是一種在使用者態檢查核心狀態機制.

子目錄:

apm:高階電源管理資訊.

bus:匯流排以及匯流排上的裝置.

devices:可用的裝置資訊.

driver:已經啟動的驅動程式.

interrupts:中斷資訊.

ioports:埠使用資訊.

version:核心版本.

特點:

1.可用文字編輯程式讀取. (more ,cat , vi , and so on)

2.不僅可以有檔案,還可以有子目錄.

3.自己可以編寫程式新增乙個目錄/檔案.

4.檔案內容是動態建立的,並不存在與磁碟上.

核心描述:

struct proc_dir_entry ;

建立檔案:

struct proc_dir_entry *create_proc_entry(const char *name , mode_t mode ,

struct proc_dir_entry *parent);

功能:建立proc檔案.

name:要建立的檔名.

mode:要建立檔案的屬性.  (預設 0755)

parent:這個檔案的父目錄,如果父目錄是proc,則為null.

否則填寫函式proc_mkdir返回的值.

返回:檔案的結構指標. (核心描述的結構體)

建立目錄:

struct proc_dir_entry * proc_mkdir (const char *name , struct proc_dir_entry

*parent);

功能:建立proc目錄.

name:目錄名稱.

parent:這個目錄的父目錄.

刪除目錄:

void remove_proc_entry (const char *name , struct proc_dir_entry *parent);

功能:建立proc目錄.

name:目錄名稱.

parent:這個目錄的父目錄.

寫操作:

int read_proc(char *buffer , char **stat , off_t off , int count , int *peof , void *data);

buffer:把要返回給使用者的資訊寫在buffer裡面, max:page_size.

stat:一般不用》

off:偏移量.

count:使用者要取的位元組數.

peof:讀到檔案尾時,*peof = 1;

data:一般不用.

寫操作:

int write_proc(struct file *file, const char *buffer , unsigned long count , void *data);

file:該proc檔案對應得file結構,一般忽略.

buffer:待寫得資料所在的位置.

count:待寫資料的大小.

data:一般不用.

實現流程:

1.呼叫create_proc_entry建立乙個struct proc_dir_entry.

2.對建立的struct proc_dir_entry 進行賦值:read_proc, mode, owner, size,

write_proc and so on.

最後補充一點:

核心異常分析步驟:

1.檢視錯誤原因提示.

2.檢視呼叫棧. 

(對照反彙編**)

3.暫存器.

搞定~~~可以睡覺了~~

Linux proc檔案系統

proc是linux系統中的乙個虛擬檔案系統,它實際上不含有任何真正的檔案,proc中的檔案如同linux核心中的內部資料結構的介面,通過這些介面,我們可以在系統執行時獲取系統資訊或者改變核心引數。proc檔案系統包含有每個程序的目錄,每個程序由其pid號表示的資料夾表示,例如 程序230相關資訊存...

Linux proc 虛擬檔案系統使用

1 proc sysrq trigger的使用 立即重新啟動計算機 echo b proc sysrq trigger 立即關閉計算機 echo o proc sysrq trigger 匯出記憶體分配的資訊 可以用 var log message 檢視 echo m proc sysrq trig...

檔案系統 why檔案系統

為什麼需要檔案系統,可否由作業系統直接寫裸裝置?裸裝置是一種沒有經過格式化的磁碟或分割槽,即讓作業系統直接管理操作磁碟設定,進行資料讀寫等。通過檔案系統的方式組織磁碟儲存和資料管理有很多好處,比如 1.資料讀取 管理等操作變得簡單便捷 檔案系統給使用者提供了乙個簡單的操作介面,只需簡單的操作就能實現...