Android内核文件读取,判断文件是否存在代码

文章详细描述了内核代码中如何使用`filp_open`和`vfs_read`函数进行文件读取,以及`check_file_exists`函数用于检查文件是否存在,以示例的形式展示了在内核编程中的文件系统操作。
摘要由CSDN通过智能技术生成

下面是一段内核中读取文件的代码

使用到函数

filp_open

vfs_read

文件读取代码

char* file_read(const char * file_path) 
{
    struct file *file = NULL; 

    struct inode *inode = NULL; 

    char *file_buf; 

    loff_t fsize; 

    loff_t *pos;

    mm_segment_t old_fs; 

    static char error[] = "none"; 

    file = filp_open(file_path,O_RDWR,0664);
    
    if (IS_ERR(file)) 
    {

      return error;

    }
    inode = file->f_dentry->d_inode;

    fsize = inode->i_size;

    old_fs = get_fs();

    set_fs(KERNEL_DS);
    
    pos = &(file->f_pos);

    file_buf = (char *)kmalloc(fsize+1,GFP_KERNEL);
    
    vfs_read(file, file_buf, fsize, pos); 
    
    filp_close(file, NULL); 
    
    set_fs(old_fs);
    
    return file_buf;
}

内核代码中使用:

if(strstr(file_read("/sdcard/1.txt"),"test"))

{

///sdcard/1.txt中包含字符串test

......

}

判断文件是否存在代码

int check_file_exists(const char *file_path) {

    struct file *file = NULL; 

    file = filp_open(file_path,O_RDWR,0664);

    if (IS_ERR(file)) 
    {

          return -5;

    }
    return 0;
}

内核代码中使用:

if(check_file_exists("/sdcard/.tea/fstatatappuid.txt") == 0)

{

//文件存在

}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值