1. /proc 下文件的内容是动态创建的,当文件可写时可用作控制和配置目的。
2. 在某个进程读取 /proc 文件时,内核会分配一个内存页,驱动程序通过这个内存页将数据返回到用户空间 (read()调用传入的用户空间的buff指针)。
3. 驱动程序中需要定义一个 read_proc() 函数,并且把该函数与 /proc 入口项 (/proc 下的文件节点) 连接起来通过内核函数create_proc_read_entry()。
4. 实例

//proc.c #include <linux/module.h> #include <linux/init.h> #include <linux/proc_fs.h> char buffer[]="good morning "; int scull_read_procmem(char *buf, char **start, off_t offset, int count, int *eof, void *data) { int len; len = sprintf(buf,"%s",buffer); return len; } int proc_init_module(void) { create_proc_read_entry("mem", 0 /* default mode */, NULL /* parent dir */, scull_read_procmem, NULL /* client data */); return 0; } void proc_cleanup_module(void) { remove_proc_entry("mem", NULL /* parent dir */); } module_init(proc_init_module); module_exit(proc_cleanup_module);
分析: 不能直接将 buffer的地址赋给 buf ,而是需要通过 sprintf() 格式化输出到buf 。