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

操作系统:文件

一切皆文件

1.Linux中的七种文件 

①. 普通文件(Regular file)
  • 通常用来存储文本或二进制数据,如文本文件、图像文件 等。       
  • 在Linux中的文件类型占位符为-
  • 文本文件:源代码,txt文档等
  • 二进制可执行文件:源码编译后的可执行文件
  • 其他特殊编码格式的数据文件:/var/log/wtmp,图片,音视频,数据库文件 等等
2. 目录文件(Directory file)
  • 用来存储其他文件和目录的位置信息。
  • 在Linux中的文件类型占位符为d
  • 家目录不是/home目录:每个用户都有自己的家目录,除root的家目录在/root外, 其他普通用户的家目录位于/home目录下面的以自己用户名为名的目录下
  • PATH路径:准确的说,PATH是shell中的一个环境变量,在各种操作系统中都有,用 以存储可执行文件所在的目录,当我们在shell里写入指令时,实际是在所有PATH路 径里查找是否存在该可执行文件
3. 符号链接文件(Symbolic link file)
  • 类似于Windows系统中的快捷方式,它指向另一 个文件或目录。
  • 在Linux中的文件类型占位符为l
  • 软链接:一个新的文件,文件内容为原始文件的具体存储位置,跟Windows中的快捷方式 一样;
  • 硬链接:本质上是同一个文件,只是这个文件有了不止一个名字,相当于与一个具有双国 籍的人,或者有两个户口的人,虽然名字,国籍,户口所在位置不同,但本质上还是同一 个人
4. 块设备文件(Block device file)
  • 用于存储数据的设备,如硬盘、U盘等。
  • 在Linux中的文件类型占位符为 b
  • 块(block)的概念在操作系统中广泛存在,虽然所处的层,模块各不相同,但其本质思 想是相通的。它指的是一段固定大小的连续内存或磁盘空间,用于数据存储和管理。块被 用于以结构化和高效的方式组织和管理数据。它们将数据分解成更小、可管理的部分,从 而使数据的访问、检索和修改更容易。这个概念被应用于操作系统的许多不同部分,从文 件系统到输入/输出操作。
5. 字符设备文件(Character device file)
  • 用于传输字符流的设备,如键盘、鼠标等。
  • 在Linux中的文件类型占位符为 c
  • 它的特点是该 文件中传递的数据为字符数据,构成字符流,同时数据是实时的,不能存储
6. 套接字文件(Socket file)
  • 用于进程间通信的文件。
  • 件在Linux中的文件类型占位符为 s
  • 套接字(socket)是应用层和运输层的接口,负责将应用层的数据,通过运输层的TCP 或者UDP传输出去。Socket是网络编程中,发送和接收数据的唯一接口,发数据则往 socket文件写,收数据则是从socket中读数据。
7. 管道文件(FIFO file)
  • 类似于套接字文件,也用于进程间通信,但是它只能用于相关 进程之间的通信。
  • 在Linux中的文件类型占位符为p
  • 管道文件,也称为命名管道,是Linux中用于进 程间通信(IPC)的一种文件类型
  • 它允许两个或多个进程通过读写共享数据缓冲区来相互通信。管道文件类似于普通文件, 但不同的是,它只存在于内存中,而不是存储在磁盘上。
  • 文管道文件有两个端口,一个用于写入,一个用于读取。
  • 当一个进程向管道文件的写入端口写入数据时,数据将被存储在共享缓冲区中。另一个 进程可以从管道文件的读取端口读取数据。数据按照写入的顺序读取,所以第一个写入 的数据也是第一个读取的数据。
  • 管道文件可用于在同时运行的进程之间传递数据。例如,一个进程可能生成需要由另一 个进程处理的数据。第一个进程可以将数据写入管道文件,第二个进程可以从管道文件 中读取数据并对其进行处理。

2.文件的属性

文件中的inode是什么?

        Inode通过指针指向文件数据的实际存储位置,帮助文件系统有效管理磁盘空间。

        而上面介绍符号链接文件的地方中的硬链接,就是通过inode实现的,文件名不同,但是文件中的inode号一样那么指向文件存储的位置就是一样的。

3.文件的逻辑结构

4.文件控制块

5.对文件操作的函数

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • SQL Server查询计划阅读及分析
  • 【c++刷题笔记-动态规划】day45: 115.不同的子序列 、583. 两个字符串的删除操作 、 72. 编辑距离
  • Chat-REC——基于 LLM 的推荐系统算法解析
  • Android SurfaceFlinger——创建EGLContext(二十六)
  • Docker部署Elasticsearch8.6.0 Kibana8.6.0
  • rabbitmq生产与消费
  • HTTPServer改进思路1
  • 怎样在 PostgreSQL 中实现数据的异地备份?
  • 微信小程序-CANVAS写入图片素材、文字等数据生成图片
  • MySql性能调优05-[sql实战演练]
  • 简单工厂、工厂方法与抽象工厂之间的区别
  • 云计算遭遇的主要安全威胁
  • el-tree动态添加子节点的问题
  • 加拿大上市药品查询-加拿大药品数据库
  • 2.3 大模型硬件基础:AI芯片(上篇) —— 《带你自学大语言模型》系列
  • @angular/forms 源码解析之双向绑定
  • 「前端」从UglifyJSPlugin强制开启css压缩探究webpack插件运行机制
  • 【从零开始安装kubernetes-1.7.3】2.flannel、docker以及Harbor的配置以及作用
  • 2017年终总结、随想
  • ES学习笔记(10)--ES6中的函数和数组补漏
  • JavaScript 奇技淫巧
  • java概述
  • Laravel核心解读--Facades
  • 面试总结JavaScript篇
  •  一套莫尔斯电报听写、翻译系统
  • 中国人寿如何基于容器搭建金融PaaS云平台
  • d²y/dx²; 偏导数问题 请问f1 f2是什么意思
  • 《码出高效》学习笔记与书中错误记录
  • ionic异常记录
  • 智能情侣枕Pillow Talk,倾听彼此的心跳
  • ​如何使用QGIS制作三维建筑
  • ‌移动管家手机智能控制汽车系统
  • #13 yum、编译安装与sed命令的使用
  • #Linux(Source Insight安装及工程建立)
  • (12)Linux 常见的三种进程状态
  • (13):Silverlight 2 数据与通信之WebRequest
  • (阿里巴巴 dubbo,有数据库,可执行 )dubbo zookeeper spring demo
  • (二十四)Flask之flask-session组件
  • (三十)Flask之wtforms库【剖析源码上篇】
  • (十一)JAVA springboot ssm b2b2c多用户商城系统源码:服务网关Zuul高级篇
  • (转)JAVA中的堆栈
  • (转)Linq学习笔记
  • (转)清华学霸演讲稿:永远不要说你已经尽力了
  • * CIL library *(* CIL module *) : error LNK2005: _DllMain@12 already defined in mfcs120u.lib(dllmodu
  • .md即markdown文件的基本常用编写语法
  • .NET Core中Emit的使用
  • .Net 中Partitioner static与dynamic的性能对比
  • .net和php怎么连接,php和apache之间如何连接
  • .net之微信企业号开发(一) 所使用的环境与工具以及准备工作
  • .net中的Queue和Stack
  • .NET中的十进制浮点类型,徐汇区网站设计
  • .sh
  • @Builder注释导致@RequestBody的前端json反序列化失败,HTTP400
  • @Controller和@RestController的区别?
  • [ vulhub漏洞复现篇 ] Hadoop-yarn-RPC 未授权访问漏洞复现