当前位置: 首页 > 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.dtcms.com/a/312925.html

相关文章:

  • 【C++】面向对象编程:继承与多态的魅力
  • kafka创建topic报错解决思路之一
  • 日常--详细介绍qt Designer常用快捷键(详细图文)
  • 硅基计划3.0 知识探究 常见类方法
  • 关于Web前端安全防御之安全头配置
  • PHP入门及数据类型
  • 【2025ICCV-目标检测方向】WaveMamba:用于 RGB-红外目标检测的小波驱动曼巴融合
  • 《金字塔原理》读书思考笔记
  • GitOps:云原生时代的革命性基础设施管理范式
  • 关于 xrdp远程桌面报错“Error connecting to sesman on 127.0.0.1:3350“的解决方法
  • Python 基础语法(一):从常量到运算符
  • LeetCode 126:单词接龙 II
  • C语言的基本结构
  • http://localhost:8080/photos/xxx.png的本地图片访问方案
  • 电路原理图绘制专业实战教程2
  • 0803 思维导图+小项目
  • 【Redis学习路|第一篇】初步认识Redis
  • PPT写作五个境界--仅供学习交流使用
  • 构建企业级Web应用:AWS全栈架构深度解析
  • 力扣经典算法篇-39-有效的数独(二维数组和三维数组的应用)
  • AI 编程技巧、技术笔记
  • 安卓调javaScript Not find method “forceLogout“ implementatidsignature or namesp
  • 面向智能体的上下文工程:策略、实现与 LangGraph 实践
  • 基于单片机火灾报警系统/防火防盗系统设计
  • (9)NMPC非线性模型预测控制及机械臂ROS控制器实现
  • MCP-与本地大模型集成实现工具调用
  • 微服务的使用
  • java中Optional类的使用和注意采坑
  • DBMS设计 之2 从数据中台到三种中台
  • 常见的框架漏洞(Thinkphp,spring,Shiro)