linux下的 Proc 檔案系統

2021-06-16 20:58:25 字數 2476 閱讀 4953

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...