lv4 嵌入式开发-1 Linux文件IO

目录

1 文件的概念和类型

2 如何理解标准IO

3 流(FILE)的含义

3.1 流

3.2 文本流和二进制流

3.3 流的缓冲类型

4 小结

5 缓存区实验


1 文件的概念和类型

概念:一组相关数据的有序集合

文件类型:
常规文件    r  
目录文件    d
字符设备文件    c  U盘(不含里面文件)
块设备文件    b 
管道文件    p
套接字文件    s
符号链接文件    l

UNIX基础知识-系统调用和库函数 

应用层调用printf,C库函数调用内核系统调用

也可以直接应用代码系统调用

2 如何理解标准IO

标准I/O由ANSI C标准定义  

主流操作系统上都实现了C库  

标准I/O通过缓冲机制减少系统调用,实现更高的效率

3 流(FILE)的含义

3.1 流

FILE

标准IO用一个结构体类型来存放打开的文件的相关信息

标准I/O的所有操作都是围绕FILE来进行

流(stream)

FILE又被称为流(stream)

文本流/二进制流

3.2 文本流和二进制流

Windows

二进制流:换行符     ‘\n’      

文本流:    换行符     ‘\r’ ‘\n’

Linux             

                   换行符     ‘\n’

3.3 流的缓冲类型

全缓冲 当流的缓冲区无数据或无空间时才执行实际I/O操作

行缓冲 当在输入和输出中遇到换行符(‘\n’)时,进行I/O操作  当流和一个终端关联时,典型的行缓冲

无缓冲 数据直接写入文件,流不进行缓冲

标准I/O –stdin,stdout,stderr

标准I/O预定义3个流,程序运行时自动打开

标准输入流

0

STDIN_FILENO

stdin

标准输出流

1

STDOUT_FILENO

stdout

标准错误流

2

STDERR_FILENO

stderr

4 小结

标准IO流的缓冲类型stdin /  stdout /  stderrstdin/stdout 默认是行缓冲stderr没有缓冲写代码显示缓冲区大小

5 缓存区实验

#include <stdio.h>
#include <unistd.h>int main(int argc,char*argv[]){printf("hello world");while(1){sleep(1);}}

 如果程序没结束,printf不会输出

如果此时加入了换行符 

#include <stdio.h>
#include <unistd.h>int main(int argc,char*argv[]){printf("hello world\n");while(1){sleep(1);}}

立刻进行了输出, 说明行缓冲

#include <stdio.h>
#include <unistd.h>
int main(int argc,char*argv[]){int i=0;//for(i=0;i<100;i++){for(i=0;i<1025;i++){printf("a");}while(1){sleep(1);}}

100没能让缓存区写满,1025次写入让缓存写满了,进行了输出

练习:

1. 标准输入使用的是_______
A. 行缓冲 B. 全缓冲 C. 无缓冲 D. 自定义缓冲

A
2. 根据实验结果,标准输入的最大容量是____个字节 

1024

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/77797.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

前端工程化小记

1.引言 工业界一直都是&#xff1a;能机器做的都交给机器&#xff0c;因为人更容易犯错。所以关于代码语法检查、代码格式化、commit注释规范、代码编译等等这些工作量繁杂且巨大的苦力活&#xff0c;除非你不想把人当马用&#xff0c;那还是交给机器去做&#xff0c;是吗&…

【尚硅谷】第05章:随堂复习与企业真题(数组)

来源&#xff1a;尚硅谷Java零基础全套视频教程(宋红康2023版&#xff0c;java入门自学必备) 基本都是宋老师发的资料里面的内容&#xff0c;只不过补充几个资料里没直接给出答案的问题的答案。 不想安装markdown笔记的app所以干脆在这里发一遍。 第05章&#xff1a;随堂复习…

ChatGPT AIGC 一键总结SQL优化所有知识点

SQL优化一直是程序员非常关注的内容,使用ChatGPT AIGC结合思维导图进行总结SQL优化的所有知识点内容。 非常简单实用的操作,就得到了如何进行SQL优化的所有细节。 更多内容见: AIGC ChatGPT ,BI商业智能, 可视化Tableau, PowerBI, FineReport, 数据库Mysql Oracle, Off…

Flink CDC 菜鸟教程 -环境篇

本教程将介绍如何使用 Flink CDC 来实现这个需求, 在 Flink SQL CLI 中进行,只涉及 SQL,无需一行 Java/Scala 代码,也无需安装 IDE。 系统的整体架构如下图所示: 环境篇 1、 准备一台Linux 2、准备教程所需要的组件 下载 flink-1.13.2 并将其解压至目录 flink-1.13.2 …

阿里后端开发:抽象建模经典案例【文末送书】

文章目录 写作前面1.抽象思维2.软件世界中的抽象3. 经典抽象案例4. 抽象并非一蹴而就&#xff01;需要不断假设、验证、完善5. 推荐一本书 写作末尾 写作前面 在互联网行业&#xff0c;软件工程师面对的产品需求大都是以具象的现实世界事物概念来描述的&#xff0c;遵循的是人…

微信小程序父子组件通讯方法

自定义方法中发送命令 const app getApp() Component({options: {styleIsolation: isolated},data: {},properties: {},attached() {this.init()},methods: {init() {console.log(父组件执行子组件)},clickBtn() {this.triggerEvent(changeRoute, 发送数据到父组件, {})},} }…

typeScript--[函数定义]

一.TypesScript 函数的定义 函数的定义包括两种类型&#xff1a;函数声明和函数表达式。 1.函数声明 function hello(): string {return "hello" } 2.函数表达式 var hello1 function (): string {return "hello" } 二.函数之可选参数 参数后面的限…

Android Studio导入aosp源码

1、在 Ubuntu 系统下&#xff0c;进入源码根目录&#xff0c;运行如下命令&#xff1a; source build/envsetup.sh # 初始化环境变量。 lunch sdk_phone_x86_64 make idegen -j6 # 六核编译 idegen 模块 忽略此命令&#xff1a;mmm development/tools/idegen/ # 此命令可…

XL-LightHouse 与 Flink 和 ClickHouse 流式大数据统计系统

一个Flink任务只能并行处理一个或少数几个数据流&#xff0c;而XL-LightHouse一个任务可以并行处理数万个、几十万个数据流&#xff1b; 一个Flink任务只能实现一个或少数几个数据指标&#xff0c;而XL-LightHouse单个任务就能支撑大批量、数以万计的数据指标。 1、XL-LightHo…

2023计算机毕设选题 python毕业设计如何选题

文章目录 一、python 毕设 选题推荐二、选题注意事项2.1 难度怎么把控&#xff1f;2.2 题目名称怎么取&#xff1f; 三、开题指导3.1 起因3.2 如何避坑(重中之重)3.3 为什么这么说呢&#xff1f; 四、最后 一、python 毕设 选题推荐 以下为学长手动整理python 毕业设计 项目&a…

自动驾驶的区块链结合价值所在

区块链结合自动驾驶的价值所在 1.责任判定 车辆行驶发生事故时&#xff0c;需要进行责任判定&#xff0c; 目前的事故组合方式&#xff1a; 普通车-----普通车 自动驾驶车&#xff08;处于自动驾驶状态&#xff09;--------普通车 自动驾驶车&#xff08;人工驾驶状态&#x…

预测多基因扰动的转录结果

了解细胞对基因扰动的反应是许多生物医学应用的核心&#xff0c;从识别癌症中涉及的基因相互作用到开发再生医学方法。然而&#xff0c;可能的多基因扰动数量的组合爆炸严重限制了实验验证。在这里&#xff0c;作者提出了图增强的基因激活和抑制模拟器&#xff08;GEARS&#x…

06-mq

1、消息队列有什么优点和缺点? 优点&#xff1a; 解耦、异步、削峰填谷。 缺点&#xff1a; 系统可用性降低 系统复杂性提高 一致性问题 2、常见消息队列的比较 3、Kafka的特性 1.消息持久化 2.高吞吐量 3.扩展性强&#xff08;动态&#xff09;4集群&#xff0b;4台集群…

硬件【10】运放-1-理想运放与虚断虚短的来源

1 概述 今天开始&#xff0c;聊一聊运放吧&#xff0c;之前很多兄弟们也提了这个要求。正好我最近也想深入看看运放方面的&#xff0c;那么就借这个机会一步一步再搞一搞吧。 运放这个器件相对于电阻&#xff0c;电容&#xff0c;三极管&#xff0c;MOS管等器件算是比较复杂的…

Docker进阶:Docker Compose(容器编排) 管理多容器应用—实战案例演示

Docker进阶&#xff1a;Docker Compose&#xff08;容器编排&#xff09; 管理多容器应用—实战案例演示 一、Docker Compose简介二、Docker Compose安装三、Docker Compose卸载四、Docker Compose核心概念4.1、一文件原则&#xff08;docker-compose.yml&#xff09;4.2、服务…

CC2530中文数据手册

分享一下cc2530的中文数据手册 下载地址&#xff1a;【免费】CC2530中文数据手册完全版资源-CSDN文库 最近在学习ZigBee的开发&#xff0c;使用的是cc2530芯片&#xff0c;在网上找参考手册的时候&#xff0c;发现就各种收费&#xff0c;找到一个免费的太难了&#xff0c;就在这…

大数据课程M1——ELK的概述

文章作者邮箱:yugongshiye@sina.cn 地址:广东惠州 ▲ 本章节目的 ⚪ 了解ELK的定义; ⚪ 掌握ELK的使用; 一、什么是ELK 1. 简介 ELK 是elastic公司提供的一套完整的日志收集以及展示的解决方案,是三个产品的首字母缩写,分别是 ElasticSearch、Logstash…

vue交互

目录 交互 指有人参与的&#xff0c;程序并非按照一定的顺序去执行&#xff0c;可以人为介入&#xff0c;让程序或应用去根据输入选择执行流程&#xff0c;提供给我们需要的信息。 前、后端 前端&#xff1a;指客户端&#xff0c;浏览器 用户可以直接看到、操作&#xff0c;可…

t-SNE——高维特征可视化分析

无监督学习之t-SNEhttps://github.com/SarthakV7/Clustering-Barron-s-333-word-list-using-unsupervised-machine-learning

ChatGPT:怎么用Java调出来文件选择器,然后返回文件的位置和名称?Swing 组件和 AWT 组件:Java GUI 编程的不同之处

ChatGPT&#xff1a;怎么用Java调出来文件选择器&#xff0c;然后返回文件的位置和名称&#xff1f;Swing 组件和 AWT 组件&#xff1a;Java GUI 编程的不同之处 怎么用Java调出来文件选择器&#xff0c;然后返回文件的位置和名称 ChatGPT&#xff1a; 在Java中&#xff0c;你…