Linux如何在内核态删除文件,Linux内核态下的文件操作

本文介绍了在Linux内核态下如何进行文件操作,包括打开、读取、写入和关闭文件。通过分析内核源码,找到并利用filp_open、vfs_read、vfs_write及filp_close等函数实现内核空间的文件操作。同时,提到了在内核中直接读写文件的潜在风险以及注意事项。
摘要由CSDN通过智能技术生成

在VFS的支持下,用户态进程读写任何类型的文件系统都可以使用read和write着两个系统调用,但是在linux内核中没有这样的系统调用我们如何操作文件呢?我们知道read和write在进入内核态之后,实际执行的是sys_read和sys_write,但是查看内核源代码,发现这些操作文件的函数都没有导出(使用EXPORT_SYMBOL导出),也就是说在内核模块中是不能使用的,那如何是好?

通过查看sys_open的源码我们发现,其主要使用了do_filp_open()函数,该函数在fs/namei.c中,而在改文件中,filp_open函数也是调用了do_filp_open函数,并且接口和sys_open函数极为相似,调用参数也和sys_open一样,并且使用EXPORT_SYMBOL导出了,所以我们猜想该函数可以打开文件,功能和open一样。使用同样的查找方法,我们找出了一组在内核中操作文件的函数,如下:

功能

函数原型

打开文件

struct file *filp_open(const char *filename, int flags, int mode)

读取文件

ssize_t vfs_read(struct file *file, char __user *buf, size_t count, loff_t *pos)

写文件

ssize_t vfs_write(struct file *file, const char __user *buf, size_t count, loff_t *pos)

关闭文件

int filp_close(struct file *filp, fl_owner_t id

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值