文件学习笔记

news2024/12/28 18:39:34

删除线格式 ## 文件描述符
1.文件=文件内容+文件属性。
2.文件操作=文件内容的操作+文件属性的操作。
3.所谓的“打开”文件,是指将文件的属性或内容加载到内存中—这是由冯诺依曼决定。
4.所以文件不全打开,不打开的文件放在磁盘存储。
5.内存文件(内存文件)和磁盘文件。
6.当代码运行,才是真正的对文件进行相关的操作。

1.默认文件在哪形成? 当前路径:当前进程
2.常见的记住文件属性
r读,w写,r+与w+都可以读写,当w+多了如果文件不存在多了一个文件创建的功能。a(追加写入,不断往文件新增内容,如果文件为空创建新文件)、a+
a的追加
在这里插入图片描述
在这里插入图片描述
当我们以w的方式打开文件,准备写入的时候,文件已经先被清空了。

我们向文件进行写入的时候最终是磁盘保存所以是向磁盘写入。磁盘是硬件由os提供的相关系统调用。

操作系统打开文件open头文件#include <sys/types.h> #include <sys/stat.h> #include <fcntl.h>
open创建文件使用在这里插入图片描述
我们创建不存在的文件使用上图第二个系统函数,mode是我们赋予文件的权限。pathname文件名。如果文件存在使用2个参数的open。
在这里插入图片描述
关闭文件close
在这里插入图片描述

往文件里写入东西write在这里插入图片描述
buf是字符串的起始地址

读文件
在这里插入图片描述

3.文件清空的问题?
默认情况下文件不会被情况,我们需要在open里填入0_TRUNCl来截断清空。
在这里插入图片描述
而文件操作符从3开始,0(stdin):标准输入,键盘(stdout)1:标准输出,显示器(stderr)2.标准错误,显示器。这就是未什么fd为3的原因。
0号接口的使用:
在这里插入图片描述

在这里插入图片描述
1号接口的使用:
在这里插入图片描述

在这里插入图片描述

linux下一切皆文件:
os内的存储文件结构体由文件属性和文件方法组成。像外设它有它对应的读写方法,键盘,显示器,网卡等读写方法都不一样。进程获取时调用不同数据结构来控制对应的外设进行工作。整个结构是通过stuct_file链接起来的。每个文件有对应fd号。我们需要的时候os就去找对应的fd或者设备。很像c++的多态。(驱动控制读写)

1.文件描述符的分配规则
:从头遍历数组fd_array[]找到一个最小的,没有被使用的下标,分配给新的文件。
2.重定向的本质
在操作系统里,fd上层只认fd的id,我们在os内部,通过调整特定下标的指向,我们就可以完成重定向操作。
在这里插入图片描述
oldfd是新的fdnewfd是旧的fd。dup2(fd,1);
追加重定项 指在文件里面增加内容。

3.理解缓冲区
1.缓冲区就是一段内存
2.为什么要有缓冲区
a.解放使用缓冲区的进程时间
b缓冲区可以集中处理数据刷新,减少IO的次数,从而达到提高机子的效率。
3.缓冲区由语言提供,语言界别的缓冲区。系统级别的缓冲区会立马显示出来。

一、刷新的本质:把缓冲区的数据写到OS内部,再清空缓冲区。
二、缓冲区,是自己的fie内部进行维护,属于父进程内部的数据区域

重定向: ls -a -l > log.txt -> ls -a -l\0 logtxt
上面指令:\0前面的那部分继续进行指令分析后半部分负责打开文件重定向工作。

输入重定向
cat < log.txt
追加hello至log.xt文件
echo hello >> log.txt
在这里插入图片描述
重定向方案这边做了两次。 ./a,out 1>stdout.txt 2>stderr.txt这条指令
标准输出标准错误分开打印。由于区分程序日常输出哪些是错误。
如果不想分别打印可以采用下图命令在这里插入图片描述
./a.out > all.txt 2>&1
这命令的意思是将1的内容拷贝到all.txt里面,这是因为重定向的原因导致指向不在原来位置所以需要&。2是指向显示器,此时1和2指向同一个位置。

文件系统

1️⃣ 磁盘的物理结构

2️⃣ 磁盘的存储结构

3️⃣ 磁盘的逻辑抽象结构

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

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

相关文章

在线教育-谷粒学院学习笔记(三)

文章目录1 搭建前端项目环境2 前端页面框架介绍3 讲师管理前端开发4 后台系统登录功能改造到本地5 前端框架开发过程6 讲师列表前端实现7 讲师分页前端实现8 讲师条件查询前端实现9 讲师删除功能前端实现10 讲师添加前端实现11 讲师修改前端实现12 前端路由切换问题解决1 搭建前…

Linux工具学习之【gdb】

✨个人主页&#xff1a; Yohifo &#x1f389;所属专栏&#xff1a; Linux学习之旅 &#x1f38a;每篇一句&#xff1a; 图片来源 &#x1f383;操作环境&#xff1a; CentOS 7.6 阿里云远程服务器 Whatever is worth doing is worth doing well. 任何值得去做的事情&#xff0…

【HTML】一款可交互的响应式登陆注册表单,你确定不来看看嘛(附源码)

&#x1f482;作者简介&#xff1a; THUNDER王&#xff0c;一名热爱财税和SAP ABAP编程以及热爱分享的博主。目前于江西师范大学会计学专业大二本科在读&#xff0c;同时任汉硕云&#xff08;广东&#xff09;科技有限公司ABAP开发顾问。在学习工作中&#xff0c;我通常使用偏后…

2022年五一杯数学建模C题火灾报警系统问题求解全过程论文及程序

2022年五一杯数学建模 C题 火灾报警系统问题 原题再现&#xff1a; 二十世纪90年代以来&#xff0c;我国火灾探测报警产业化发展非常迅猛&#xff0c;从事火灾探测报警产品生产的企业已超过100家&#xff0c;年产值达几十亿元&#xff0c;已经成为我国高新技术产业的一个组成…

Docker之Nginx部署前端项目

目录 创建nginx容器 nginx.conf讲解 ①所有配置必须以“;”结尾 ②nginx发布java项目 nginx发布静态vue项目 nginxtomcat实现反向代理及均衡 nginxhtml静态服务器 创建nginx容器 docker run –name mynginx -d -p 80:80 -v /data/nginx/conf/nginx.conf:/etc/nginx/ngin…

6款强烈推荐的 SD卡/内存卡数据恢复软件

SD卡/内存卡在 21 世纪的作用比以往任何时候都更加重要。众所周知&#xff0c;SD卡/内存卡具有高数据传输率并且是便携式设备&#xff0c;大多数摄影师甚至智能手机用户主要依靠它们来保存所有个人或项目照片和视频。此外&#xff0c;SD 卡还因其与各种设备的兼容性而广受欢迎。…

JUC并发编程学习笔记——AQS个人理解

1. AQS引出 1.1 前置知识&#xff1a; 线程创建的四种方式&#xff1a;Thread、Runnable、callable、线程池 LockSupport的使用&#xff1a;park()和unpark()方法 LockSupport是一个工具类&#xff0c; 提供了基本的线程阻塞和唤醒功能&#xff0c;它是创建锁和其他同步组件的…

使用 NVIDIA NeuralVDB优化大规模稀疏

使用 NVIDIA NeuralVDB优化大规模稀疏 基于 OpenVDB 过去十年的发展&#xff0c;NVIDIA NeuralVDB 的推出对于处理极其庞大和复杂的数据集的开发人员和研究人员来说是一个游戏规则的改变者。 NVIDIA NeuralVDB 的预发布版本为 OpenVDB 带来了 AI 和 GPU 优化&#xff0c;将烟雾…

【OpenCV】:OpenCV人脸识别项目杂记

项目目标&#xff1a; 1.图片人脸识别 2.视频人脸识别 3.ESP32Cam摄像头网页视频人脸识别 项目效果视频&#xff1a; ESP32Cam摄像头人脸识别OpenCV本地视频人脸识别ESP32Cam摄像头人脸检测项目基础代码内容&#xff1a; 一、读取图片 # 导入cv模块 import cv2 as cv# 读取图…

如何设置Excel表格以“只读模式“打开

设置Excel表格以“只读模式”打开&#xff0c;可以防止意外修改表格内容&#xff0c;因为“只读模式”下的Excel无法直接保存&#xff0c;这样就不用担心表格意外修改&#xff0c;关闭时又不小心保存了。 这个模式我们可以通过“另存为”的方法来设置。 打开Excel表格后&…

【学习笔记之Linux】工具之gcc/g++

背景知识&#xff1a; gcc/g是一个编译器&#xff0c;注意区分编译器和编辑器&#xff0c;vim是是编辑器。简单的说&#xff0c;编辑器是我们敲代码的工具&#xff0c;我们在编辑器上写出我们需要实现的功能&#xff1b;编译器负责实现功能&#xff0c;把我们写的高级语言编译成…

马蹄集 古人的剩余定理

古人的剩余定理 难度&#xff1a;白银 ©时间限制&#xff1a;1秒 巴占用内存&#xff1a;64M 今有物不知其数&#xff0c; 三三数之剩二&#xff0c; 五五数之剩三&#xff0c; 七七数之剩二。 问物最少几何&#xff1f; #include <bits/stdc.h> using nam…

使用Paddle飞桨重写波士顿房价预测案例

1.Paddle飞桨设计之“道” 当读者使用飞桨框架编写多个深度学习模型后&#xff0c;会发现程序呈现出“八股文”的形态。即不同的程序员、使用不同模型、解决不同任务的时候&#xff0c;他们编写的建模程序是极其相似的。虽然这些设计在某些“极客”的眼里缺乏精彩&#xff0c;…

XJar加密工具java打的包jar包加密运行,防止反编译

XJar功能特性 基于对JAR包内资源的加密以及拓展ClassLoader来构建的一套程序加密启动&#xff0c;动态解密运行的方案&#xff0c;避免源码泄露以及反编译。支持Maven插件加密过程需要Go环境&#xff1b;加密后生成Go启动器&#xff0c;保护密码不泄露GitHub: GitHub - core-l…

JSP SSM网上预约挂号系统myeclipse开发mysql数据库springMVC模式java编程计算机网页设计

一、源码特点 JSPSSM网上预约挂号系统 是一套完善的系统源码&#xff0c;对理解JSP java SrpingMVC mybiats 框架 MVC编程开发语言有帮助&#xff0c;系统具有完整的源代码和数据库&#xff0c;以及相应配套的设计文档 &#xff0c;系统主要采用B/S模式开发。研究的基本内容…

马蹄集 非常大的N

非常大的N 难度&#xff1a;白银 时间限制&#xff1a;1秒 巴占用内存&#xff1a;64M 编写程序求11/2-21/231/2-41/251/2..N1/2。 格式 输入格式&#xff1a;输入为正整数 输出格式&#xff1a;输出为浮点型&#xff08;保留六位小数&#xff09;。 #include <bits/stdc.h…

系统排障掉坑背锅?亚马逊云科技要为开发者研发提效了

出品 | CSDN 云计算任何中大型企业里的 IT 系统&#xff0c;都会有多个业务应用、多种开发语言、技术栈并存。尤其要进入云上现代化应用开发的企业和开发者&#xff0c;将面对云原生庞杂的技术分支。开发者的苦与痛&#xff1a;非功能性研发、故障排查被甩锅然而&#xff0c;IT…

深夜修复Linux桌面无法启动

玩了很久了&#xff0c;突然想学习一下&#xff0c;想做一个KDE任务栏的网速插件。 Netspeed Widget - KDE Store GitHub - dfaust/plasma-applet-netspeed-widget: Plasma 5 widget that displays the currently used network bandwidth deepin15 注销切换到 KDE Ctrl Alt …

Idea同步失败Unresolved dependency的解决办法

下载一些开源的库&#xff0c;经常会碰到一些同步问题&#xff0c;本文就该系列问题单独开一篇文章&#xff0c;和大家缕一缕这样的问题怎么解决。文章在实践过程中会保持同步更新&#xff0c;大家可以点击收藏以便于下次遇到类似问题可以快速找到解决办法。 IDEA的同步问题多…

Dbeaver连接TDengine时序数据库

前言 还是结合上一阶段的工作&#xff0c;为TPS满足合同里的要求&#xff0c;预研数据库切换为TDengine。所以查看数据的工具我得能连上去看&#xff0c;习惯了Dbeaver&#xff0c;所以先把Dbeaver整的能连接使用。 一、Dbeaver对TDengine支持情况 这个数据库是国产开源的时序数…