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

嵌入式学习day24

IO

        概念:

                IO指input/output

                Linux系统中一切皆是文件

                IO操作的对象是文件


        文件:

                一段数据的集合

                文件通常存放在外存中,掉电后数据不会丢失

                分类:

                        b(block,块设备文件)

                                按块扫描信息的文件,通常存储类型的设备通常为块设备文件

                                文件IO


                        c(character,字符设备文件)

                                按字符扫描信息的文件,一般设备通常为字符设备文件

                                文件IO


                        d(directory,目录文件)

                                目录文件,存放文件的文件夹

                                目录IO/文件IO


                        -(普通文件)

                                存放信息的文件

                                标准IO/文件IO


                        l(link,链接文件)

                                链接IO/文件IO

                                操作文件等价于操作文件指向的文件


                        s(socket,套接字文件)

                                用来进程间通信

                                文件IO


                        p(pipe,管道文件)

                                用来进程间通信

                                文件IO


标准IO

        通常用来操作普通文件

        普通文件类型

                ASCII码文件:文件中的所有内容均为能够在屏幕上显示的ASCII码字符

                        程序、文本文件均为ASCII文件

                二进制文件:文件中所有内容均为数据对应二进制存放(包含不能在界面显示的内容)

                        ASCII码文件也是二进制文件

                        图片、音视频、压缩包均为二进制文件

         标准IO的接口:

                fopen/fclose

                fgetc/fputc

                fgets/fputs

                fscan/fprintf

                fread/fwrite

                fseek/rewind/ftell

                操作步骤:

                        ①打开文件

                        ②读写文件

                        ③关闭文件

        文件的打开

                函数接口:

                fopen:

                fclose:

                fputc:

                        ch = putchar()等价于fputc(ch, stdout)

                fgetc:

                        ch = getchar()等价于fgetc(ch, stdin)

                fputs:

                        fputs不会多打印\n字符

                        puts会多打印一个\n字符

                fgets:

                        fgets不会去掉从终端接收的\n字符

                        gets会去掉从终端接收的\n字符

                fprintf:

                fscanf:


  已经打开的三个特殊的流

                        stdin:标准输入流

                        stdout:标准输出流

                        stderr:标准出错流

        

                        printf、puts、putchar都是通过stdout流实现在终端信息打印

                        scanf、gets、getchar都是通过stdin流已实现获得终端信息

                        perror通过stderr流实现在终端打印出错信息


        标准IO的缓存

                标准IO缓存:

                        标准IO是一种有缓存的IO

                        效率高

                        实时性差

                缓存的类型:
全缓存(4k):缓存区满刷新缓存

                        与文件建立的缓存一般为全缓存

                                刷新条件:

                                        缓存区满4k刷新

                                        fflush函数强制刷新

                                        fclose或者程序关闭刷新

                        行缓存(1k):遇到\n刷新缓存区

                        与终端建立的缓存一般为行缓存(stdin、stdout)

                                刷新条件:

                                        缓存区满1k刷新

                                        遇到\n刷新

                                        fflush函数强制刷新

                                        fclose或者程序关闭刷新

                        不缓存(0k):立即刷新不缓存

                        出错处理或者人机交互一般使用不缓存(stderr不缓存)

                

                

                        

man手册

        章节:
1.标准命令

                2.系统调用

                3.库函数

                4.设备说明

                5.文件格式

                6.娱乐

                7.杂项

                8.管理员命令

        使用示例:

                man 章节号 搜索内容

                

                

                

                

http://www.dtcms.com/a/325810.html

相关文章:

  • MySQL的索引(索引的数据结构-B+树索引):
  • P2865 [USACO06NOV] Roadblocks G
  • 音视频学习(五十三):音频重采样
  • 数据备份与进程管理
  • AI大模型:(二)5.1 文生视频(Text-to-Video)模型发展史
  • Apache ECharts 6 核心技术解密 – Vue3企业级可视化实战指南
  • Apache Ignite 核心组件:GridClosureProcessor解析
  • ChatML vs Harmony:深度解析OpenAI全新对话结构格式的变化
  • 基于Spring Boot房源信息推荐系统的设计与实现 -项目分享
  • Maven <pom.xml> 标签详尽教程
  • perl notes【1】
  • 云原生环境Prometheus企业级监控
  • 【Node.js从 0 到 1:入门实战与项目驱动】1.3 Node.js 的应用场景(附案例与代码实现)
  • 论文阅读:Aircraft Trajectory Prediction Model Based on Improved GRU Structure
  • 《开源标准推动Linux驱动生态繁荣》
  • 实现分页功能【jQuery】
  • GDB调试 core dump 文件与栈溢出分析
  • 《Python入门:从零到Hello World的极简指南》
  • 板子 7.20--8.11
  • Spring Boot 参数校验 Validation 入门
  • 华为云计算的行业趋势:迈向智能、融合与绿色的未来
  • 【工控】线扫相机小结 第六篇
  • 用vscode 里docker显示不出有容器和镜像 ?
  • 通用 maven 私服 settings.xml 多源配置文件(多个仓库优先级配置)
  • SQL179 每个6/7级用户活跃情况
  • 十一、Linux Shell脚本:函数与模块化
  • 逃离城市与喧嚣,拥抱新的生活方式
  • 开博尔雷电5数据线:120Gbps“闪电传输”,以Intel硬核基因从容优化数字生活
  • 【SpringBoot】持久层 sql 注入问题
  • C/C++练习面试题