《Linux内核编程》第四章:proc文件系统
来源:互联网 发布:java线程并发控制 编辑:程序博客网 时间:2024/06/02 13:31
一、proc的作用
在Linux系统中,对于内核模块,除了平常的方式,还可以使用特别的方式来向用户进程传递信息——proc文件系统。
proc文件系统设计的初衷是为了方便地访问进程信息,但是现在该文件系统得到了很大的扩展,它反映了当前运行系统的信息映像,如/proc/meminfo反映了当前内存的使用情况,/proc/modules反映了当前模块的装载情况。
如:cat /proc/meminfo cat /proc/cpuinfo cat /proc/modules
proc文件系统是对在内存中运行的系统的直接反映,它使用层次式的方式来表示系统。通过proc,我们能够方便地了解内核信息和当前正在运行着的进程的信息。因此,一些shell命令可以很方面地使用这些信息来显示系统当前状况,如ps命令。
二、创建proc文件系统的机制
创建proc文件的方式和编写驱动程序的方法相似。你至少需要定义两个函数——init_module和cleanup_module(或module_init和module_exit)函数,初始化函数用于创建proc文件并初始化,而退出函数用于清除proc文件并释放申请的内存空间等。
为了创建一个proc文件,你需要在init_module(或module_init)函数中使用create_proc_entry来创建一个proc文件句柄。该句柄是一个 struct proc_dir_entry类型的指针。然后,你需要设置这个指针的某些函数指针域,这样当用户在应用程序中通过read/write来读写这个proc文件时,就会调用这些指针域的函数来进行具体处理,就如同编写驱动程序中需要设置fops结构体一样。
结构体struct proc_dir_entry的类型定义如下:
struct proc_dir_entry{
unsigned int low_ino;
unsigned short namelen;
const char *name;
mode_t mode;
nlink_t nlink;
uid_t uid;
gid_t gid;
unsigned long size;
struct inode_operations *proc_iops;
struct file_operations *proc_fops;
get_info_t *get_info;
struct module *owner;
struct proc_dir_entry *next, *parent, subdir;
void *data;
read_proc_t *read_proc;
write_proc_t *write_proc;
atomic_t count;
int deleted;
void *set;
}
其中read_proc和write_proc是proc接口;通过设置这两个域,那么当我们在用户空间中读该proc文件时,read_proc对应的函数被调用;类似的,当我们在用户空间中写该proc文件时,write_proc对应的函数被调用。
- 《Linux内核编程》第四章:proc文件系统
- 《Linux内核编程》第四章:proc文件系统 http://blog.csdn.net/tankai19880619/article/details/8032204
- linux 内核编程之proc虚拟文件系统
- linux 内核编程之proc虚拟文件系统
- Linux内核模块编程-proc文件系统
- Linux内核模块编程-proc文件系统进阶
- 第四章 /proc/ 文件系统
- Linux嵌入式 -- 内核 - proc文件系统
- Linux 内核proc文件系统变化
- linux /proc文件系统编程实例
- Linux内核-文件系统之/proc目录
- Linux内核proc文件系统使用示例
- Linux内核中的Proc文件系统(一)
- 内核proc文件系统与seq接口----内核proc文件系统编程接口
- 内核proc文件系统与seq接口(2)---内核proc文件系统编程接口
- 内核proc文件系统与seq接口(2)---内核proc文件系统编程接口
- 内核proc文件系统简介
- 【嵌入式Linux学习七步曲之第五篇 Linux内核及驱动编程】揭开Linux Proc文件系统的神秘面纱
- C语言文件操作函数大全
- ExtJs中解决中文排序问题
- poj 1180 Batch Scheduling ( 斜率优化DP )
- rdlc页码
- cocos2d-x中精灵的应用
- 《Linux内核编程》第四章:proc文件系统
- Java中的Cookie操作
- ti omx
- 全国姓氏人数排行榜前200名
- gdb命令介绍
- linux 的errno定义
- oracle语句优化
- CCFL、WLED、RGB LED背光液晶屏优缺点
- userdel删除用户时候提示:userdel: user xx is currently logged in