proc檔案系統是一種在使用者態檢查核心狀態的機制。在proc下一般有如下子目錄和檔案:
apm:高階電源管理資訊
bus:匯流排以及匯流排上的裝置
devices:可用的裝置資訊
driver:已經啟用的驅動程式
interrupts:中斷資訊
ioports:埠使用資訊
version:核心版本
上面的檔案都具有如下特點:
1) 每個檔案都有嚴格的許可權(可讀、可寫、)
2) 可以用文字編輯器讀取
3) 不僅可以有檔案,也可以有子目錄
4) 可以自己編寫程式新增乙個/proc目錄下的檔案
5) 檔案的內容是動態建立的,並不存在於磁碟上
有關proc的檔案在核心的描述符如下:
struct proc_dir_entry ;
涉及到的函式:
int read_proc (char *buff, char ** stat, off_t off, int count, int *eof, void *data)
buff:把要返回給使用者資訊填寫在buff裡,最大不能超過page_size
stat:一般不使用
off:偏移量
count:使用者要取的位元組數
eof: 讀取到檔案尾,是需要將*eof設定為1
data:一般不用
int write_proc (struct file *file, const char *buffer, unsigned long count, void *data)
file:一般不使用
buffer:待寫的資料所在的位置
count:待寫資料大小
data: 一般不使用
建立proc檔案:
struct proc_dir_entry *create_proc_entry(const char *name, mode_t mode,
struct proc_dir_entry *parent)
name:要建立的檔案名字
mode:要建立檔案的屬性,預設為07555
parent:這個檔案的父目錄
建立目錄:
struct proc_dir_entry *proc_mkdir(const char *name,
struct proc_dir_entry *parent)
name:要建立的目錄名
parent:這個目錄的父目錄
測試用例:
#include #include #include #include #include #include module_license("gpl");
module_description("proc module");
module_alias("proc module");
#define max_length 64
#define max_record 5
#define f_name "pid"
#define d_name "tst"
#define p_name "/proc/" d_name "/" f_name
typedef struct pidcomm_t;
static int bufpos = 0;
pidcomm_t pidcommbuf[max_record];
static struct proc_dir_entry *pid_entry;
static struct proc_dir_entry *dir_entry;
static int pid_write (struct file *file, const char __user *buffer,
unsigned long count, void *data)
} return pid_buffer_size;
}
static int pid_read (char *page, char **start, off_t off,
int count, int *eof, void *data)
ret = sprintf(pos, "pid\tcommand\n");
len += ret;
pos += ret;
for (i=0; iread_proc = pid_read;
pid_entry->write_proc = pid_write;
printk ("<1> create " p_name " successfully.\n");
return 0;
}
static void __exit pid_exit (void)
module_init (pid_init);
module_exit (pid_exit);
Linux下proc檔案系統詳解 proc
proc檔案系統是乙個偽檔案系統,它只存在記憶體當中,而不占用外存空間。它以檔案系統的方式為訪問系統核心資料的操作提供介面。使用者和應用程式可以通過proc得到系統的資訊,並可以改變核心的某些引數。這裡將介紹如何從 proc檔案系統中獲取與防火牆相關的一些效能引數,以及如何通過 proc檔案系統修改...
Linux的proc檔案系統
proc 為乙個核心資料結構介面,使用者空間和核心空間可以通過該介面通訊,與普通檔案不同的是,這些虛擬檔案的內容都是動態建立的。proc 檔案系統是乙個偽檔案系統,它只存在記憶體當中,而不占用外存空間。它以檔案系統的方式為訪問系統核心資料的操作提供介面。使用者和應用程式 可以通過 proc 得到系統...
Proc檔案系統
include static struct proc dir entry proc null int read proc char page,char start,off t off,int count,int eof,void data len sprintf page len,debug mod...