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

嵌入式开发学习———Linux环境下IO进程线程学习(二)

Linux文件I/O基础

Linux文件I/O主要通过系统调用实现,分为低级I/O(无缓冲)和标准I/O(带缓冲)两类。核心系统调用包括:

int open(const char *pathname, int flags, mode_t mode);
ssize_t read(int fd, void *buf, size_t count);
ssize_t write(int fd, const void *buf, size_t count);
int close(int fd);

关键特点

  • 文件描述符(fd)是非负整数,代表打开的文件
  • 所有设备均抽象为文件操作
  • 默认使用缓冲I/O提升性能

示例代码

#include <fcntl.h>
#include <unistd.h>int fd = open("test.txt", O_RDWR | O_CREAT, 0644);
char buf[100];
read(fd, buf, sizeof(buf));
write(fd, "data", 4);
close(fd);

 

作业: 

 1·使用文件10函数,实现文件的拷贝

#include <myhead.h>int main(int argc, const char *argv[])
{int fd1=open("./myfile",O_RDONLY);int fd2=open("./myfile1",O_WRONLY | O_CREAT | O_TRUNC,0770);char buf[1024]="";while(read(fd1,buf,sizeof(buf))!=0){write(fd2,buf,strlen(buf));}close(fd1);close(fd2);puts("拷贝成功!");return 0;
}

运行结果:

2.使用标准1O函数,实现图片的拷贝

#include <myhead.h>int main(int argc, const char *argv[])
{FILE *fp1=NULL,*fp2=NULL;fp1=fopen("./myfile2","r");if(fp1==NULL){ERROR_MSG("fopen error");}fp2=fopen("./myfile3","w");if(fp2==NULL){ERROR_MSG("fopen error");}char buf[2048]="";while(fread(buf,1,sizeof(buf),fp1)){fwrite(buf,1,strlen(buf),fp2);}puts("拷贝成功!");fclose(fp1);fclose(fp2);return 0;
}

运行结果:

3.使用文件10函数,计算文件的大小

#include <myhead.h>int main(int argc, const char *argv[])
{int fd=open("./myfile2",O_RDONLY);char buf[1024]="";int sum=0;while(read(fd,buf,sizeof(buf))!=0){sum=sum+strlen(buf);	}close(fd);printf("一共有%d字节!\n",sum);return 0;
}


运行结果:

5.牛客网 

http://www.lryc.cn/news/608760.html

相关文章:

  • 04.Redis 的多实例
  • 笔试——Day27
  • 前端面试手撕题目全解析
  • 【数据迁移】Windows11 下将 Ubuntu 从 C 盘迁移到 D 盘
  • Redis——常用指令汇总指南(三)(哈希类型)
  • Odoo OWL前端框架全面学习指南 (后端开发者视角)
  • 三角洲行动ACE反作弊VT-d报错?CPU虚拟化如何开启!
  • GitOps:云原生时代的革命性基础设施管理范式
  • Ubuntu20.04 Carla安装与和Ros联合仿真
  • Ubuntu22.4部署大模型前置安装
  • AI + 云原生:正在引爆下一代应用的技术革命
  • LabVIEW小波变换检测信号断点
  • HCIP笔记(第四章)
  • 悬挂的绳子,它的函数方程是什么样子的?
  • Python Dash 全面讲解
  • 大屏项目展示
  • 基于Springboot+UniApp+Ai实现模拟面试小工具八:管理端基础功能实现
  • RAG与智能体技术全景解析:架构革新、场景落地与未来趋势
  • linux2.6 和 unix-v6 源码实验
  • uni-app学习笔记01-项目初始化及相关文件
  • Java小红书源码1:1还原uniapp_仿小红书源码
  • UniApp 实现顶部固定导航栏 Tab 及滚动变色效果
  • 7.13.B+树
  • io_setup系统调用及示例
  • [AI8051U入门第十五步]W5500实现DHCP自动获取IP
  • UE5的渲染Debug技巧
  • [每周一更]-(第154期):Docker 底层深度剖析:掌控 CPU 与内存资源的艺术
  • Leetcode 12 java
  • GitHub 趋势日报 (2025年08月02日)
  • ThinkPad P16 Gen2,P16 Gen2 LTE(21FA,21FB)原装Win10Pro,Win11专业版系统镜像,恢复出厂开箱状态