当前位置: 首页 > news >正文

内核读写磁盘文件

在用户态,即我们一般编写的C语言程序中,可以使用open、close、read、write等系统调用对磁盘文件进行操作,那么在内核态呢?同样有相应的函数可以使用,而这些函数却是open这些系统调用会使用到的,故而我们还是在内核面向应用的层级进入,实现对磁盘文件的操作。关于如何从open一层层往下找到我们即将要使用的函数过程就不说了,下面直接给出我们用到的函数定义或原型信息,都在include/linux/fs.h文件中有声明,分别在fs/open.c和fs/read_write.c实现下面两类操作函数:

1.打开、关闭文件

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

其中,filename就是文件名(包含完整路径),flags必须包含O_RDONLY、O_WRONLY或O_RDWR其中之一,而mode只有在flags包含O_CREAT时才有作用,表示打开的文件不存在就进行创建时该文件的访问权限,可以是S_IRWXU、S_IRUSR或S_IWUSR等的组合,对于O_和S_开头的这些宏说明可使用man 2 open命令查看,而这些宏则分别在内核include/uapi/asm-generic/fcntl.h和include/uapi/linux/stat.h文


http://www.mrgr.cn/news/26404.html

相关文章:

  • 代码随想录算法训练营第五十八天 | 拓扑排序精讲-软件构建
  • windows C++ 并行编程-编写parallel_for 循环
  • Hugging Face NLP课程学习记录 - 0. 安装transformers库 1. Transformer 模型
  • Day 11-12:查找
  • 大模型LLM常见下载方式
  • 航空航司reese84逆向
  • Agent实战——使用 Dify 和 Moonshot API 构建 AI 工作流
  • 计算机毕业设计Python+Tensorflow股票推荐系统 股票预测系统 股票可视化 股票数据分析 量化交易系统 股票爬虫 股票K线图 大数据毕业设计 AI
  • [Golang] Channel
  • 三星ZFlip5/ZFlip4/W7024刷安卓14国行OneUI6.1系统-高级设置-韩/欧/港版
  • 【计网】从零开始使用UDP进行socket编程 --- 客户端与服务端的通信实现
  • Android 测试机
  • 链表之判空,删除
  • Android 12.0 Launcher修改density禁止布局改变功能实现
  • 微信小程序实现转盘抽奖,可以自定义编辑奖项列表
  • mysql学习教程,从入门到精通,SQL IN BETWEEN 运算符(13)
  • 51单片机快速入门之独立按键
  • Linux下抓包分析Java应用程序HTTP接口调用:基于tcpdump与Wireshark的综合示例
  • 吃透高频考点:Android中的ANR问题及其解决策略万字教程
  • 前端开发第三节课