proc目录是系统模拟出来的一个文件系统,本身并不存在于磁盘上,其中的文件都表示内核参数的信息,这些信息分两类,一类是可都可写的,这 类参数都在“/proc/sys”目录下,另一类是只读的,就是“/proc/sys”目录之外的其他目录和文件,当然这只是一种惯例,实际在其他目录下建立可读写的/proc文件也是可以的。
Linux内核在2.4以后/proc目录文件的建立已经变得很容易,以前版本都还需要构造文件操作结构来实现,现在只需要调用简单函数就可以了。Linux提供了一系列的创建函数
创建一个 proc 文件
根据对 proc 文件的不同使用,内核提供了多种包装函数来创建一个 proc 文件。
方法一:
struct proc_dir_entry *create_proc_entry(const char *name, mode_t mode, struct proc_dir_entry *parent)
这是最直接,包装最少的创建方法。
参数 name 是要创建的 proc 文件名。mode 是该文件权限值,例如 S_IRUGO,可传入0表示采用系统默认值。parent 指定该文件的上层 proc 目录项,如果为 NULL,表示创建在 /proc 根目录下。
create_proc_entry() 完成的任务主要包括:检测 mode 值,分配 proc_dir_entry 结构,注册 proc_dir_entry。其定义如下:
struct proc_dir_entry *create_proc_entry(const char *name, mode_t mode,
struct proc_dir_entry *parent)
{
struct proc_dir_entry *ent;
nlink_t nlink;
/* 要创建的项是目录,设置其mode */
if (S_ISDIR(mode)) {
if ((mode & S_IALLUGO) == 0)
mode |= S_IRUGO | S_IXUGO;
nlink = 2;
} else { //非目录
if ((mode & S_IFMT) == 0)
mode |= S_IFREG;

本文详细解析了Linux内核2.4以后proc目录文件的创建方式,包括create_proc_entry、create_proc_read_entry、proc_create等函数的用法,以及proc目录的创建、删除和读写操作。proc文件系统用于暴露内核参数,分为可读写和只读两类,创建proc文件主要通过注册管理函数实现。
752

被折叠的 条评论
为什么被折叠?



