文件操作

news2024/12/23 14:52:31

前言: 文件=内容+属性 要向访问文件就要打开文件——>用进程来打开——>要把文件先加载到内存中——>
一个进程可以打开多个文件,OS中也有可能多个进程打开了多个文件 文件以多,就需要进行管理,——先描述再组织

没有被打开的文件是在磁盘中的

用进程打开文件

用C语言的库函数打开文件

fopen(“要打开文件的路径”,“打开方式”)
w:写的方式打开文件,文件不存在会自己创建文件,
在这里插入图片描述
在这里插入图片描述
对文件进行写入操作:
在这里插入图片描述
在这里插入图片描述
通过以w方式打开文件,文件内容会被清空这一特征,可以联想到我们的echo> 重定向命令——重定向命令的代码封装的就是以w打开的代码。
在这里插入图片描述

以a(追加)的方式打开文件

再进行打开写入关闭时就不会覆盖之前写的内容,而是会在尾部写入
在这里插入图片描述

联想到我们的命令:echo>> 追加重定向——追加重定向的代码也是用的a打开方式的代码
在这里插入图片描述
以r读的方式打开
在这里插入图片描述
有三个文件是在系统启用时就会默认打开的:
在这里插入图片描述
和我们上面用fopen()打开文件返回的FILE*值一样,可以直接使用:
在这里插入图片描述

用系统接口打开文件

打开文件时进程干的事,和进程直接关联的是操作系统,所以最底层的打开文件一定是操作系统干的事,然后他在向上封装一些接口,然后让我们可以调用系统接口来打开文件。
open("要打开文件”,打开方式,限权设置)

以写的方式打开,再次打开文件内容清空:

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

打开文件文件内容追加:

在这里插入图片描述
此时我们就发现,这两个系统调用,和我们C语言的以w a 方式打开文件的效果一样
由此我们可以看出,C语言的接口一定是调用了系统的接口
在这里插入图片描述
由此也可以看出,C语言返回的FILE*是一个结构体,里里面一定分装了系统调用返回的fd
在这里插入图片描述

系统调用打开文件返回的fd是什么呢?

我们可以看出他是一个整数,用来表示每个文件的,
在这里插入图片描述
fd的作用
在这里插入图片描述

理解一切皆文件

虽然每个硬件底层的读写方法不一样但是,但是我们内存文件结构体里有相同名字的函数指针,当我们堆不同文件进行读写操作的时候,是调用不同文件结构体对象的相同名结构体指针的。
这样就屏蔽了硬件的差异,所以在操作系统看来,一切的东西都是要描绘成相同结构的不同对象来管理的。
在这里插入图片描述

fd的分配规则

在这里插入图片描述
在这里插入图片描述

不难看出因为0 1 2是被默认提前打开的,所以接下来的同一进程中打开的文件的文件描述符按照顺序递增的存储到文件描述符表中的。
在这里插入图片描述
但是当我们打开文件之前先把fd=0或者2的默认打开文件关闭时,在打开一个文件,文件的fd就会补上:
在这里插入图片描述
但是如果关闭的是1呢?
首先我们要明白C语言中的打印:
在这里插入图片描述
本该打印到显示器的内容,却打印到了文件中,这不就是我们的输出重定向嘛
echo > fd=1 log.txt

输入重定向同样也可以用这种方式实现
在这里插入图片描述

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

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

相关文章

基于Spring Boot框架实现大学生选课管理系统

文章目录 源代码下载地址项目介绍项目功能界面预览 项目备注源代码下载地址 源代码下载地址 点击这里下载源码 项目介绍 项目功能 教务处管理 开课、开班审批,排课处理,班级操作,选课时间段管理** 使用了sql解决了开课开班的时间段的冲突…

基于PHP后台微信图书馆借书还书小程序系统设计与实现

博主介绍:黄菊华老师《Vue.js入门与商城开发实战》《微信小程序商城开发》图书作者,CSDN博客专家,在线教育专家,CSDN钻石讲师;专注大学生毕业设计教育和辅导。 所有项目都配有从入门到精通的基础知识视频课程&#xff…

IDM下载器激活

文章目录 1、Internet Download Manager简介2、Internet Download Managery应用3、Internet Download Managery下载 1、Internet Download Manager简介 Internet Download Manager (IDM) 是一款功能强大的下载管理软件,旨在帮助用户更高效地管理和加速其下载任务。它…

【硬件开发】原型设计对于成功产品开发重要性及常见阶段

电子产品的设计与开发始于原型制作阶段。这些原型虽可能与最终产品极为相似,但总带有实验性质,因为电子原型的制作过程包括对新概念、新思想及新解决方案的测试。虽然存在出错的风险,跳过这一阶段可能会导致不必要的开支。不擅长电子硬件设计…

CSS和JavaScript

CSS 在html中引入CSS 我们需要先在该项目先建立css文件 html引入CSS,在<head></head>中添加<link>标签 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" co…

QT--4

QT 使用定时器完成闹钟 #include "widget.h" #include "ui_widget.h"void Widget::timestart() {timer.start(1000); }void Widget::timeend() {timer.stop(); }Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget) {ui->setupUi(t…

电商核心技术揭秘52:数字化内容营销创新

相关系列文章 电商技术揭秘相关系列文章合集&#xff08;1&#xff09; 电商技术揭秘相关系列文章合集&#xff08;2&#xff09; 电商技术揭秘相关系列文章合集&#xff08;3&#xff09; 电商技术揭秘四十一&#xff1a;电商平台的营销系统浅析 电商技术揭秘四十二&#…

火爆开展齐力控股集团带您了解2024年第13届生物发酵展

参展企业介绍 齐力控股集团专业生产高精度卫生级不锈钢设备配件及管道所有连接件、锻造、精加工一站式服务。产品广泛适用于制药、饮料、乳制品、啤酒、生物化工等领域。所有产品均按3A、SMS、DIN、RJT、IDF、DS等标准制造&#xff0c;所有产品均达到GMP药典要求。我们是一家有…

【LeetCode刷题记录】简单篇-110-平衡二叉树

【题目描述】 给定一个二叉树&#xff0c;判断它是否是 平衡二叉树 。 【测试用例】 示例1&#xff1a; 输入&#xff1a;root [3,9,20,null,null,15,7] 输出&#xff1a;true 示例2&#xff1a; 输入&#xff1a;root [1,2,2,3,3,null,null,4,4] 输出&#xff1a;false …

基于Vue3与ElementUI Plus酷企秀可视化设计器中的创新应用

一、引言 随着科技的快速发展&#xff0c;前端技术已经从简单的网页呈现进化到了复杂的数据可视化、互动体验和跨平台应用的构建。酷企秀可视化设计器作为一个集成了多种前端技术的创新平台&#xff0c;不仅为企业提供了全方位的数字化展示解决方案&#xff0c;还在多个行业领…

新产品Spiff来啦!Salesforce将最新收购加入Sales Cloud!

Salesforce在过去一年中一直处于收购间歇期&#xff0c;但这并没有妨碍Salesforce在2023年底收购了Spiff。Spiff是新型激励薪酬管理(Incentive Compensation Management&#xff0c;ICM) 软件提供商 &#xff0c;是AppExchange合作伙伴&#xff0c;结合直观的低代码UI、熟悉的电…

车载测试系列:车载测试Bug定位与分析

车载Bug定位 1.1 模拟复现条件 能够复现bug才能对问题进行定位、解决以及验证。找到bug存在的特定的条件&#xff0c;进行重现。对于依赖外部输入的条件&#xff0c;如果条件比较复杂难以模拟可以在程序里预设直接进入对应状态。 1.2 打印Log 根据问题的现象&#xff0c;在…

配置完串口,用了printf函数,LCD屏不显示了

配置完串口后&#xff0c;记得打开微库&#xff01; /* USER CODE BEGIN PFP */u8 rx[2];u8 rx_buff[10];int fputc(int c, FILE* s){u8 ch[1] {c};HAL_UART_Transmit(&huart1,ch, 1, 0xfff);return c; } /* USER CODE END PFP */

springboot3+springsecurity+redis 整合登录认证以及权限校验

1. 架构说明 整体架构如下(提供的对应的模块引入)&#xff0c;围绕着springsecurity中的三大核心展开&#xff1a; ​ 1、Authentication&#xff1a;存储了认证信息&#xff0c;代表当前登录用户 ​ 2、SeucirtyContext&#xff1a;上下文对象&#xff0c;用来获取Authenti…

爬虫学习--5.xpath数据解析

xpath是XML路径语言&#xff0c;它可以用来确定xml文档中的元素位置&#xff0c;通过元素路径来完成对元素的查找。HTML就是XML的一种实现方式&#xff0c;所以xpath是一种非常强大的定位方式。 基本概念 XPath&#xff08;XML Path Language&#xff09;是一种XML的查询语言…

计算机网络-----总结UDP的报文结构

UDP报文结构 UDP报文结构: 有报头和载荷组成 源端口: 发送端的端口号 目的端口: 接收端的端口号 数据报长度 : UDP报文的数据长度 包括报头和载荷 校验和: 检测UDP报文在传输过程中是否损坏, 用于数据完整性校验 说明: UDP报头一共八个字节 因此, 每个部分(源端口, 目的端…

sql Server2015安装——参考的教程

1.sql Server安装包来自&#xff1a;https://mp.weixin.qq.com/s/Pe_YbWw_MgwjzzZhQWIYfA 2.需要的替换文件和补丁&#xff1a;https://blog.csdn.net/Auspicious_air/article/details/108315154 https://blog.csdn.net/m0_60477996/article/details/126748477 3.安装manger…

php开发-个人博客项目文件操作类编辑器上传下载删除读写

特地整了个软件 这就舒服了 文件操作类的开发 文件的任意上传&#xff0c;下载&#xff0c;读取&#xff0c;删除操作等 1.文件上传类-任意文件上传 分为三类 1&#xff0c;代码自主编写的 先写一个html的上传表单&#xff0c;这个网上搜索就有 标题看着不够明确啊&#…

php168 6.0.1变量覆盖

php168 6.0.1变量覆盖 -》 远程代码执行漏洞 前言:敢说全网最详细是因为我做一半我做不下去了&#xff0c;我心态做崩溃了&#xff0c;然后上网找漏洞成因&#xff0c;我找不到&#xff0c;然后又搞了好久&#xff0c;真的心态崩了&#xff0c;到最后灰盒测试的时候我可能PHP版…

【论文阅读】Spectral–Spatial Attention Network for Hyperspectral Image Classification

Spectral–Spatial Attention Network for Hyperspectral Image Classification 论文地址摘要&#xff1a;1. 简介1.1.动机1.2.贡献 2. 相关作品2.1.双向递归网络RNN2.2.CNN2.3. Attention Mechanism 3. 方法3.1 Attention with RNN for Spectral Classification3.2&#xff0e…