基础IO -- 理解文件(1)

目录

一:回顾文件

二:加深对文件的理解

1.概念

2.以w写方式打开

3.以a追加方式打开

4.重定向


一:回顾文件

以前学习过在C语言中的文件操作, 但那根本是不足以理解文件的,即站在语言角度是不可能理解文件的

我们要进行文件操作时,前提是我们的程序跑起来了

文件打开和关闭,是CPU在执行我们的代码

二:加深对文件的理解

1.概念

打开文件,本质上就是进程打开文件!!!

即struct task_struct 和struct XXX(文件结构)之间一定存在着两种对象之间的指针关系

文件没有被打开的时候,那它存在哪里呢?? --->  在磁盘上存在

一个进程是可以打开多个文件的,而系统内部也可以存在很多进程  --->  因此在很多情况下,操作系统内部一定存在大量的被打开的文件

所有在OS需要将这些被打开的文件进程管理起来 ---> 先描述,再组织

(因此可以大概猜到每一个被打开的文件,在OS内部,一定要存在对应的描述文件属性的结构类似PCB!)

像PCB一般,把一个文件打开就创建一个结构,然后将其用链表串起来,最后对打开文件的管理就变成了对链表的增删查改

如果我们在磁盘上新建一个大小为0的文件,什么都不写,此时这个文件会不会占据磁盘空间呢???  --->   会的,因为其存在的各种属性也是数据,也会占据一定的空间

即文件 = 属性 + 内容

2.以w写方式打开

打开方式为 w

1.如果不存在,就在当前路径下,新建指定的文件

2.若存在,默认打开文件的时候,就会先把目标文件清空

3.以a追加方式打开

即 appending  追加,不会清空文件,而是在后面追加内容

4.重定向

echo ... > xxx文件  即 重定向操作

输出重定向一定是文件操作

每次写入文件内容都是新的,与以w方式打开文件方式一样(先清空,后写入)

通过这个特性,可以将 echo > 符号做出两个新的用途

1.创建新文件:

2.清空文件:

echo ... >> xxx 追加重定向  即与以 a方式 打开文件一致

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

QT 中如何保存matlab 能打开的.mat数据矩阵!

Windows 上安装并使用 MATIO 库来保存 MATLAB 格式的 .mat 文件,需要进行以下步骤: 1. 下载并安装 CMake MATIO 使用 CMake 构建项目,因此你需要先安装 CMake。 前往 CMake 官网下载适用于 Windows 的安装程序并安装。 2. 下载 MATIO 库源…

说下SSL/TLS四次握手过程?

参考自:SSL/TLS四次握手过程是怎么样的?HTTPS、SSL、TLS三者之间的联系和区别 一.SSL/TLS 简介 SSL(Secure Socket Layer 安全套接层)是基于 HTTPS 下的一个协议加密层,用于解决 HTTP 在传输数据时使用明文而导致的不安全问题。 SSL 是 HT…

AD报错failed to add class member\net

什么原因导致的我到现在还没弄懂,总之解决方法是在PCB端删除所有现有的并且可删除的nets与components。下次问题复现了再补充截图(不想再遇到了球球了这种玄学问题)。 网络截图: 解决步骤:设计->类 把可删除的网络…

西门子828d的plc一些信息记录

1、虽然是200的plc但是引入了DB的形式替代原来的V存储区。 2、用户自定义DB块范围,DB9000-DB9063,共64个DB块。 可用地址范围如上图 机床MCP483面板地址表,其它类型的面板地址自己在828d简明调试手册里查看。 如何上载828d的plc程序: 1.通…

coze bot开发的最小实践

一、coze专业版开通 网站地址:扣子专业版-火山引擎 开通流程: 1."立即使用" 扣子专业版 1.点击【立即使用】2.登录账号(上一步已登录可跳过) 2.进行实名认证后,开启【扣子专业版】(已认证可跳过) 1. 前…

Mysql行转列的写法

一、何为行转列? 在搞清楚这一概率之前,不妨来认识一下我们mysql表二维表结构数据,例如学生成绩表格,属性有学生姓名,学生科目,成绩,表结构如下: CREATE TABLE test_9 (id int(11) …

Android map 获取值

Android Map 获取值的完整指南 在Android开发中,使用Map(映射)来存储和检索数据是非常常见的需求。Map是一种键值对集合,能够快速而高效地根据特定的键获取值。在这篇文章中,我们将深入探讨如何在Android应用中使用Ma…

Linux的zookeeper安装部署

1.zookeeper是一个分布式的,开放源码的分布式应用程序协调服务,是hadoop和HBASE的重要组件 2.下载zookeeper安装包zookeeper安装包https://archive.apache.org/dist/zookeeper/zookeeper-3.5.9/ 移动到Linux解压 解压到/export/server文件夹 命令: tar -xvf apache-zooke…

AI大模型:生产中的RAG,为何表现不尽如人意?

RAG(Retrieval Augmented Generation,检索增强生成)是一个将大规模语言模型(LLM)与来自外部知识源的检索相结合的框架,以改进问答能力的工程框架。虽然一切都看起来很美好,在实际应用中,RAG的状态确是“一看就会,一用就…

【Linux】嵌入式Linux系统的组成、u-boot编译

Linux—嵌入式Linux系统的组成、u-boot编译 前言一、嵌入式Linux系统的组成1.1 嵌入式Linux系统和PC完整的操作系统的对比如下:1.2 PC机—Windows系统启动流程(PC机—Linux系统、嵌入式ARM—linux系统的启动流程类似) 二、编译u-boot2.1 u-bo…

内核定时器API实现点灯

1.内核定时器 定时器是一个很常用的功能,需要周期性处理的工作都要用到定时器。 Linux 内核定时器 采用系统时钟来实现,并不是6ull里面的硬件定时器。 Linux 内核定时器使用很简单,只需要提供超时时间(相当于定时值)和定时处理函数即…

7万字Java后端面试题大全(附答案)——持续更新

目录 Java基础JDK/JRE/JVM三者的关系JDK常用的包 和 equals 的区别是什么?Java 中的几种基本数据类型了解么?什么是自动拆装箱?final 关键字中有什么作用?接口和抽象类有什么区别?String, StringBuffer 和 StringBuild…

构建流媒体管道:利用 Docker 部署 Nginx-RTMP 从 FFmpeg RTMP 推流到 HLS 播放的完整流程

最近要实现一个类似导播台的功能,于是我先用 FFmpeg 实现一个参考对照的 Demo,我将其整理为一篇文章,方便后续大家或者和自己参考! 1、软件工具介绍 本次部署相关软件 / 工具如下: FFmpeg:全称是 Fast Fo…

与ZoomEye功能类似的搜索引擎还有哪些?(渗透课作业)

与ZoomEye功能类似的搜索引擎有: Shodan:被誉为“物联网的搜索引擎”,专注于扫描和索引连接到互联网的各种设备,如智能家居设备、工业控制系统、摄像头、数据库等。它提供全球互联网设备的可视化视图,帮助用户了解网络…

第21~22周Java主流框架入门-Spring 1SpringIoc容器与Bean管理

1.Spring IOC 与依赖注入课程笔记 课程简介 本节课介绍了 Spring 框架中的核心概念——IOC(控制反转)和 DI(依赖注入)。Spring 是 Java 生态中最重要的框架之一,几乎所有的 Java 项目开发都会使用它。理解 Spring 的…

RWKV-CHN模型部署教程

一、模型介绍 RWKV 语言模型(用纯 100%RNN 达到 GPT 能力,甚至更强),该项目旨在通过为您自动化所有事情来消除使用大型语言模型的障碍。您需要的是一个只有几兆字节的轻量级可执行程序。此外,该项目还提供了一个接口兼…

python yolov8半自动标注

首先标注一部分图片,进行训练,生成模型,标注文件为xml方便后面统一做处理。 1、标注数据(文件为xml, 转为txt用于训练,保留xml标签文件) 2、模型训练(训练配置、训练代码、) 3、使用…

一个将.Geojson文件转成shapefile和kml文件的在线页面工具

最近需要读取.geojson格式的流域边界文件。在谷歌地球桌面版和globalMapper中均无法正常读取。下面我发现的一个在线的平台可以很好实现这一功能。 GeoJSON to SHP Converter Online - MyGeodata Cloud ❤️欢迎点赞收藏❤️

关于WPF(Windows Presentation Foundation)中Grid控件

本文将从Grid控件的基础概念开始,逐步深入探讨其特性、用法、实例代码,以及最佳实践。 1. WPF和布局简介 WPF是一种用于构建Windows桌面应用程序的UI框架,它通过XAML(Extensible Application Markup Language)使开…

Oracle中解决select into值集为空的报错情况

先看为空的情况 procedure test is n number; begin select 1 into n from CUX_2_OM_RELEASE_LIMIT_V cov where cov.Customer_Idnull; end; CUX_2_OM_RELEASE_LIMIT_V中没有id是空的,因此返回的结果一定是空集 运行结果: 有时候我…