Linux内核中操作文件数据的方法

在Linux kernel中,由于缺乏标准库,调试驱动程序时读写文件需要使用如filp_open(), vfs_read(), vfs_write()等内核函数。尽管如此,kernel开发者不建议直接在内核中进行文件操作,因为这可能引发策略和安全问题。在可加载模块中使用这些函数也可能导致失败。为避免问题,可以考虑在内核线程中执行这些操作。" 108629893,7995473,理解与防范:LDAP注入详解,"['Web安全', '目录服务', 'LDAP协议']
摘要由CSDN通过智能技术生成

一、背景

有时候需要在Linux kernel(大多是在需要调试的驱动程序)中读写文件数据。在kernel中操作文件没有标准库可用,需要利用kernel的一些函数,这些函数主要有:filp_open()、filp_close()、vfs_read()、vfs_write()、set_fs()、get_fs()等,使用这些函数的时候需要包含头文件<linux/fs.h>和<asm/uaccess.h>

二、API

//filename:表明要打开或创建文件的名称,包含路径部分,在内核中打开文件需要注意打开文件的时机,很容易出现需要打开文件的驱动很早就加载并打开文件,但被打开的文件所在设备还没有挂载到文件系统中,会导致打开失败
//open_mode:文件打开方式,其取值与标准库中的open相应参数类似,可以取O_CREATE,O_RDWR,O_RDONLY,O_WRONLY等
//mode:创建文件时使用,设置创建文件的读写权限,其他情况可以忽略设为0
struct file* filp_open(const char *filename, int open_mode, int mode);

//用于查找形参filename代表的文件的属性信息,将其保存到形参stat中返回给用户
static inline int vfs_stat(const char __user filename, struct kstat stat);

//结构体kstat原型
struct kstat {
    u64 ino;
    dev_t dev;
    umode_t mode;
    unsigned int nlink;
    kuid_t uid;
    kgid_t gid;
    loff_t size;
    struct t
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值