【Linux】Linux文件I/O

文件I/O

直接使用系统调用的缺点:

影响系统性能

系统调用比普通函数调用开销大,因为系统调用要进行用户空间和内核空间的切换。

系统调用一次所能读写的数据量大小,受硬件的限制。

解决方案:使用带缓冲功能的标准I/O库,以减少系统调用的次数。 例如: fwrite、fread、fopen、fclose、fseek、fflush

文件系统接口

【Linux】Linux文件I/O

文件系统缓存

【Linux】Linux文件I/O

标准文件访问方式

【Linux】Linux文件I/O

直接IO方式

【Linux】Linux文件I/O

示例:

代码语言:javascript代码运行次数:0运行复制

#define _GNU_SOURCE#include #include #include #include #include #include #include #include #define TOTAL 10//直接IO要考虑到硬件特性//磁盘最基本的单位是扇区,一个扇区512字节#define BUF_LEN 512int writeToFile(int fd,const char* buf,int len) {int wlen = 0;if ((wlen = write(fd, buf, len)) < 0) {fprintf(stderr,"write to %d failed,reason:%s.n",fd,strerror(errno));return -3;}return wlen;}int main(int argc, char** argv) {//const char* TEXT = "This is a test.n";char* buf = NULL;//buf = (char*)malloc(BUF_LEN); //地址要是512的倍数——内存边界对齐posix_memalign((void**)&buf,512,BUF_LEN);strcpy(buf,"This is test.n");const char* filename = "./io_test.txt";int fd = 0;int i = 0;fd = open(filename,O_RDWR | O_TRUNC | O_CREAT | O_DIRECT);if (fd < 0) {fprintf(stderr, "fopen %s failed,reason:%s.n exitn",filename,strerror(errno));return -1;}for (i = 0; i < TOTAL; i++) {if (writeToFile(fd, buf, BUF_LEN) < 0) {fprintf(stderr,"write to %s failed,reason: %s.n exitn",filename,strerror(errno));//return -2;}printf("%dn",i+1);}printf("finished.n");//printf("Start to sleep 30 second....n");if (buf)free(buf);close(fd);return 0;}

直接IO和标准方式进行对比

**示例:**测试20s内对同一文件的读取次数0

代码语言:javascript代码运行次数:0运行复制

#define _GNU_SOURCE#include #include #include #include #include #include #include #include #define BUF_SIZE 512int main(int argc, char** argv) {char* buf = NULL;const char* filename = "./open_compare.txt";int fd = -1;time_t start;time_t cur;int rlen = 0;int ret = 0;static int read_total = 0;ret = posix_memalign((void**)&buf,512,BUF_SIZE);if (ret)fprintf(stderr,"posix_memalign failed.reason:%sn",strerror(errno));start = time(NULL);do {read_total++;//fd = open(filename, O_RDWR | O_DIRECT);fd = open(filename,O_RDWR);if (fd < 0) { fprintf(stderr, "fopen %s failed,reason:%s.n exitn", filename, strerror(errno));return -1;}do {if ((rlen = read(fd, buf, BUF_SIZE)) 0);close(fd);cur = time(NULL);} while ((cur-start) < 20);printf("total time:%dn",read_total);return 0;}

直接IO

巧文书 巧文书

巧文书是一款AI写标书、AI写方案的产品。通过自研的先进AI大模型,精准解析招标文件,智能生成投标内容。

巧文书 61 查看详情 巧文书

【Linux】Linux文件I/O

标准方式

(高速页缓存,多次读取速度快。)

【Linux】Linux文件I/O

O_SYNC

【Linux】Linux文件I/O

缓存同步

为了保证磁盘系统与缓冲区内容一致,Linux系统提供了sync,fsync,fdatasync三个函数。

函数描述:向打开的文件写数据,成功返回写入的字节数,出错则返回-1。

代码语言:javascript代码运行次数:0运行复制

#includeint fsync(int fd);int fdatasync(int fd);void sync(void);

说明:

sync——将所有修改过的块缓冲区排入写队列,然后就返回,它并不等待实际写磁盘操作结束。fsync——将fd对应文件的块缓冲区立即写入磁盘,并等待实际写磁盘操作结束返回。fdatasync——类似fsync,但只影响文件的数据部分。而除数据外,fsync还会同步更新文件属性。

Linux文件IO流程图

【Linux】Linux文件I/O

以上就是【Linux】Linux文件I/O的详细内容,更多请关注创想鸟其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/509879.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
vscode怎么使用内置终端
上一篇 2025年11月9日 00:12:45
iPhone 17 Pro如何更改默认浏览器
下一篇 2025年11月9日 00:12:49

相关推荐

  • linux文件名乱码

    linux文件名乱码 在windows上使用ftp上传文件到Linux上,中文名称在Linux系统中显示为乱码。虽然将Linux的env设置了LANG=en_US.UTF-8,并且本地的Shell客户端编码也设置成UTF-8,但在Shell中(或通过http访问),仍是乱码。 原因在于,Window…

    2026年8月27日
    000
  • 多用户角色系统的权限管理设计

    多用户角色系统的权限管理应通过分配和管理权限来确保系统安全性和可维护性。1) 定义角色及其权限集合,2) 实现角色继承性,3) 进行细粒度权限控制,4) 管理动态权限。通过这些措施,可以构建一个健壮且灵活的权限管理系统,满足不同用户角色的需求。 在设计多用户角色系统的权限管理时,我们需要考虑的首要问…

    2026年8月27日
    000
  • Swoole在Kubernetes中的部署实践

    swoole在kubernetes中部署的实践包括以下关键步骤:1) 使用swoole的热重启功能和kubernetes的liveness及readiness探针确保服务可用性;2) 通过resource quotas和limit ranges限制pod资源,并调整swoole server配置;3…

    2026年8月27日
    000
  • 上海AI Lab最新推出Mixture-of-Memories:线性注意力也有稀疏记忆了

    上海AI Lab最新推出Mixture-of-Memories:线性注意力也有稀疏记忆了上海AI Lab最新推出Mixture-of-Memories:线性注意力也有稀疏记忆了上海AI Lab最新推出Mixture-of-Memories:线性注意力也有稀疏记忆了上海AI Lab最新推出Mixture-of-Memories:线性注意力也有稀疏记忆了

    aixiv专栏:探索mom:混合记忆模型,兼顾强大的记忆扩展能力和低序列复杂度 AIxiv专栏持续关注并报道全球顶尖AI学术研究和技术进展,至今已发布超过2000篇高质量文章。欢迎投稿或联系报道:liyazhou@jiqizhixin.com;zhaoyunfeng@jiqizhixin.com 回…

    2026年8月27日 用户投稿
    200
  • linux连不上网

    linux连不上网linux连不上网linux连不上网linux连不上网

    一、检查当前环境配置的ip信息 二、检查网络配置是否正确 [root@hadoop/]# cat /etc/sysconfig/network-scripts/ifcfg-eth0 DECIVE=eth0 //指向的网络配置文件IPADDR=192.168.1.226 //IP地址 GATEWAY=…

    2026年8月27日 用户投稿
    300
  • 从小白到高手:蝴蝶号无人直播全套教学课程

    从小白到高手:蝴蝶号无人直播全套教学课程从小白到高手:蝴蝶号无人直播全套教学课程从小白到高手:蝴蝶号无人直播全套教学课程从小白到高手:蝴蝶号无人直播全套教学课程

    蝴蝶号无人直播的核心在于效率、内容复用和技术赋能,其搭建需五步:第一步明确直播目标(带货、涨粉或品牌宣传)以选择合适的无人模式;第二步配置硬件与软件,包括性能达标的电脑、稳定网络及推流工具如obs和蝴蝶号;第三步制作高质量内容,确保画面清晰、配音专业、脚本吸引人;第四步设计互动机制,如预设关键词回复…

    2026年8月27日 用户投稿
    200
  • 如何解决复杂依赖关系排序问题?vaimo/topological-sort可以帮到你

    可以通过一下地址学习composer:学习地址 在处理复杂的项目依赖关系时,我遇到了一个难题:如何高效地对这些依赖进行排序,以确保每个依赖项都在其所需的其他项之前被处理。这个问题在处理软件包管理、依赖注入或工作单元等场景中尤为常见。尝试了多种方法后,我发现了vaimo/topological-sor…

    用户投稿 2026年8月27日
    100
  • 为什么Qwen能自我改进推理,Llama却不行?斯坦福找到了原理

    为什么Qwen能自我改进推理,Llama却不行?斯坦福找到了原理为什么Qwen能自我改进推理,Llama却不行?斯坦福找到了原理为什么Qwen能自我改进推理,Llama却不行?斯坦福找到了原理为什么Qwen能自我改进推理,Llama却不行?斯坦福找到了原理

    深度解析:大模型的自我改进能力为何参差不齐?斯坦福大学最新研究揭秘 近期,斯坦福大学的一项研究深入探讨了大型语言模型(LLM)自我改进能力背后的机制,解释了为何有些模型能够有效利用额外计算资源提升性能,而另一些则停滞不前。该研究的核心在于模型的初始“认知行为”。 研究人员选取了Qwen-2.5-3B…

    2026年8月27日 用户投稿
    100
  • linux命令乱码

    1、查看当前在用的语言 echo $LANG 2、查看系统已安装的语言包 3、对终端的字符集编码进行设置 4、保持以上三者编码相同 推荐教程:linux教程 以上就是linux命令乱码的详细内容,更多请关注创想鸟其它相关文章!

    2026年8月27日
    000
  • 如何切换Yandex浏览器 俄罗斯引擎Yandex语言与区域设置指南

    先切换界面语言再调整区域设置。打开Yandex浏览器,点击右上角三点菜单→“Настройки”→“Язык”→“Добавить язык”→选择“中文”或“English”→点击该语言右侧三点→“Отображать на этом языке”→重启浏览器;随后进入“Поисковая сис…

    2026年8月27日
    200
  • linux启动失败

    失败原因: 系统启动找不到引导项。 解决方法: 1、BMC中通过虚拟光驱挂载同一系统镜像,重新启动 2、选择rescue installed system选项 3、进入Shell脚本输入界面后输入命令 # chroot /mnt/sysimage 切换到根 4、挂载光驱 # mount /dev/s…

    2026年8月27日
    100
  • 从零起步,用蝴蝶号打造稳定的无人直播收入来源

    从零起步,用蝴蝶号打造稳定的无人直播收入来源从零起步,用蝴蝶号打造稳定的无人直播收入来源从零起步,用蝴蝶号打造稳定的无人直播收入来源从零起步,用蝴蝶号打造稳定的无人直播收入来源

    要通过“蝴蝶号”构建无人直播收入,核心在于搭建自动化内容生产与分发系统并结合精准流量策略。1. 内容准备需大量高质量、可循环播放的素材,模块化和主题化设计提升更新效率;2. 系统搭建需配置推流、视频源导入及播放编排,确保网络稳定是关键;3. 流量获取依赖短视频平台引流,优化标题、封面与标签以提升曝光…

    2026年8月27日 用户投稿
    100
  • 压力测试工具(JMeter)的使用场景

    jmeter主要用于性能测试和负载测试,还适用于接口测试、数据库测试和分布式测试。1. 性能和负载测试:模拟大量用户访问,识别系统瓶颈。2. 接口测试:测试api接口,调整线程数和循环次数优化系统。3. 数据库和分布式测试:需注意配置和节点同步。4. 脚本示例:提供一个简单的http get请求测试…

    2026年8月27日
    000
  • 蝴蝶号无人直播带货变现模式解析及实操技巧

    蝴蝶号无人直播带货变现模式解析及实操技巧蝴蝶号无人直播带货变现模式解析及实操技巧蝴蝶号无人直播带货变现模式解析及实操技巧蝴蝶号无人直播带货变现模式解析及实操技巧

    “蝴蝶号”无人直播带货是一种通过预录视频、智能互动实现24小时自动销售的模式。1.核心在于模拟真人与高效转化,需准备高质量视频内容;2.技术层面依赖推流软件或云端服务确保稳定直播;3.引入智能客服系统实现自动回复与互动;4.商品需具备视觉冲击力、标准化程度高、售后简单等特点;5.平台选择需匹配产品与…

    2026年8月27日 用户投稿
    400
  • linux有回收站吗

    linux有回收站吗     linux没有统一的回收站,回收站都是桌面环境加上去的。因此使用rm命令删除文件时,应该小心谨慎,删除后文件无法找回。 下面,我们自己在服务器上实现一个回收站功能 1、首先在自己家的目录创建一个文件夹用来保存删除的文件 mkdir -p ~/.Trash 2、修改.ba…

    2026年8月27日
    000
  • 11.99万 奕派007 VS 启源A07 谁是小米SU7最佳平替?

    11.99万 奕派007 VS 启源A07 谁是小米SU7最佳平替?11.99万 奕派007 VS 启源A07 谁是小米SU7最佳平替?11.99万 奕派007 VS 启源A07 谁是小米SU7最佳平替?11.99万 奕派007 VS 启源A07 谁是小米SU7最佳平替?

    小米su7热度不减,但高昂售价和漫长的等待时间让许多消费者却步。别担心,本文将为您推荐两款性价比极高的替代车型:东风奕派007和长安启源a07,价格仅为小米su7的一半左右! ☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 免费无限量使用 DeepSeek R1 模型☜☜☜ 东风奕派007 经…

    2026年8月27日 用户投稿
    100
  • linux如何开启root权限

    linux如何开启root权限linux如何开启root权限linux如何开启root权限linux如何开启root权限

    1、打开linux系统控制台,当提示权限不足时输入:sudo passwd root,按回车键。如下图: 2、提示需要输入密码,此时需要的密码是Linux系统登录密码,输入时没有任何提示,输完直接回车键 3、请输入新的UNIX密码,现在要输入你想设置的root密码,屏幕不会显示输入数字,输完回车键 …

    2026年8月27日 用户投稿
    100
  • Vite 打包后私有变量无法赋值的原因是什么?如何解决?

    Vite 打包后私有变量赋值问题及解决方案 本文分析在使用 Vite 构建 Vue 项目时,私有类成员变量在打包后无法正确赋值的问题,并提供解决方案。 问题描述: 在开发环境下,使用 Vite 和 Vue (版本:Vite ^5.2.8, Vue ^3.4.21) 开发的项目中,私有类成员变量可以正…

    2026年8月27日
    100
  • linux vim怎样不保存退出

    linux vim怎样不保存退出 vim不保存退出可以先按下ESC进入命令模式;然后输入:进入底行命令模式;最后输入q再回车即可。 更多Vim命令 进入编辑模式,按 o 进行编辑 编辑结束,按ESC 键 跳到命令模式,然后输入退出命令: :w保存文件但不退出vi 编辑 :w! 强制保存,不退出vi …

    2026年8月27日
    000
  • 蝴蝶号无人直播常见问题汇总及解决方法大全

    蝴蝶号无人直播常见问题汇总及解决方法大全蝴蝶号无人直播常见问题汇总及解决方法大全蝴蝶号无人直播常见问题汇总及解决方法大全蝴蝶号无人直播常见问题汇总及解决方法大全

    无人直播存在三大核心问题及应对策略:一是技术细节需反复调试,如检查推流软件编码设置、硬件驱动更新、上传带宽是否达标等;二是内容合规风险高,必须使用正版素材并定期更新内容以规避版权问题与平台封禁;三是互动体验弱,需通过预设问答、ai语音合成、社群联动等方式提升“人情味”,同时模拟实时性与动态元素以维持…

    2026年8月27日 用户投稿
    100

发表回复

登录后才能评论
关注微信