linux内核中直接读写文件

我们在调试linux内核驱动程序时或者某些特殊场景下,需要直接读写文件,但是我们不适合直接使用系统调用sys_open(),sys_read(),sys_write()等.我们可以利用其它内核函数来实现,filp_open() ,filp_close(), vfs_read()vfs_write()等,这些函数在linux/fs.h和asm/uaccess.h头文件中声明。

1. 打开文件

strcut file* filp_open(const char* filename, int open_mode, int mode);
该函数返回strcut file*结构指针,该返回值用IS_ERR()来检验其有效性。
参数说明
filename: 表明要打开或创建文件的名称(包括路径部分)。
open_mode: 文件的打开方式,其取值与标准库中的open相应参数类似,可以取O_CREAT,O_RDWR,O_RDONLY等。
mode:  创建文件时使用,设置创建文件的读写权限,其它情况可以匆略设为0
 
我们通过分析linux kernel源代码可以发现,系统调用sys_open()的实现如下:
SYSCALL_DEFINE3(open, const char __user *, filename, int, flags, umode_t, mode)
{
long ret;


if (force_o_largefile())
flags |= O_LARGEFILE;


ret = do_sys_open(AT_FDC
  • 0
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值