proc文件系统简单应用实例

PROC文件系统:虚拟文件系统,用于用户空间和内核空间交互。

创建文件夹
struct proc_dir_entry *proc_mkdir(const char *name, struct proc_dir_entry *parent);
参数1:name 文件夹名称

参数2:parent表示父节点名称(为null空时表示父节点为proc)

创建文件
static inline struct proc_dir_entry *proc_create(const char *name, umode_t mode, struct proc_dir_entry *parent,const struct file_operations *proc_fops)
参数1:name 文件名称
参数2:mode 权限,自定义一般可以填写0666
参数3:parent 父节点名称,填空一般是在proc子目录

参数3:对文件的操作函数

删除文件
remove_proc_entry( const char *name, struct proc_dir_entry *parent );
参数1:name 文件/文件夹名称

参数2:parent目录中名为name的文件/文件夹名称

用法例子:
static struct proc_dir_entry   *ftp_proc_dir = NULL;
static struct proc_dir_entry   *ftp_proc_file1 = NULL;

static struct proc_dir_entry   *ftp_proc_file2 = NULL;

static int ajun1_proc_show(struct seq_file *seq,void * )
{
//可以做你想做的事
return 0;
}
static int proc_ajun1_open(struct inode *inode, struct file *file)  
{    
    return single_open(file, ajun1_proc_show, inode->i_private); 

}

static const struct file_operations proc_ajun1_fops = {

.owner = THIS_MOUDLE,
.open = proc_ajun1_open, //for data use
.read = proc_ajun1_read, //the same as cat
.write = proc_ajun1_write, //the same as echo

}

static const struct file_operations proc_ajun2_fops = {
.owner = THIS_MOUDLE,
.open = proc_ajun2_open,
.read = proc_ajun2_read,
.write = proc_ajun2_write,

}

ftp_proc_dir = proc_mkdir("test_jun",NULL);创建文件夹
ftp_proc_file1 = proc_create("ajun1",0666,ftp_proc_dir,&proc_ajun1_fops);

ftp_proc_file2 = proc_create("ajun2",0666,ftp_proc_dir,&proc_ajun2_fops);

在test_ajun文件夹里创建ajun1、ajun2文件节点

附:用ftp_proc_file1 = proc_create("test_ajun/ajun1",0666,NULL,&proc_ajun1_fops);也可以在test_ajun文件夹中创建ajun1文件节点

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值