分类: LINUX
2018-12-09 16:59:43
内核通过proc文件系统下建立文件,来向用户空间提供输出信息,用户空间可以通过任何文本阅读应用,来查看该文件信息。
但是,在老版本的Linux内核中,proc文件系统有一个缺陷:如果输出内容大于1个内存页,需要多次读,因此处理起来很难。另外,如果输出内容太大,速度会比较慢,有时会出现一些意想不到的情况。比如,对于需要输出大量信息像meminfo,或者结构化的信息像cpuinfo等时就会显得很笨拙,并且代码也很不好理解与维护。
因此,内核为了简化这种proc文件的实现,提供了另一种方案-seq_file接口。并,在2.6内核中,由于大量使用了seq_file功能,使得内核输出大文件信息更容易。seq_file的函数,最早是在2001年就引入了,但以前内核中一直用得不多,而到了2.6内核后,许多/proc的只读文件中大量使用了seq函数处理。
1.非结构化信息显示方式-single_open方式
此种方式是简单方式,对应的释放函数为single_release。
如内核中的meminfo信息的实现(cat /proc/meminfo查看)。...见实例。
如我的上一篇文章创建proc文件
2.结构化信息显示方式-seq_open方式
此种方式为复杂方式,对应的释放函数为seq_release。
如内核中的cpuinfo信息的实现(cat /proc/cpuinfo查看)。...见实例。
3.实例