详解—[Linux 文件描述符]

news2024/11/25 16:34:23

一、文件描述符的概念 

文件描述符是Linux系统中用于访问文件的一种机制,它是一个非负整数,用于指代被打开的文件

在Linux中,所有执行I/O操作的系统调用都是通过文件描述符完成的。

文件描述符是一个简单的非负整数,用来表明每一个被进程打开的文件。

在程序刚启动的时候,默认有三个文件描述符,分别是:0 (代表标准输入),1 (代表标准输出),2 (代表标准错误)。

我们可以通过open函数得到一个指定文件的文件描述符,如果出现错误则返回-1。open函数需要传入一个文件路径和操作模式,调用会返回一个整型的文件描述符。

在Linux系统中,打开文件的过程涉及到进程、文件描述符、文件描述表、打开文件表、目录项、索引表之间的联系

当我们打开一个文件时,操作系统会为该进程分配一个文件描述符(file descriptor),并将其存储在该进程的文件描述符表(file descriptor table)中。

然后,操作系统会在打开文件表(open file table)中创建一个新的条目,并将该条目与该文件描述符相关联。

此外,操作系统还会在目录项(directory entry)和索引表(inode table)中查找该文件,并将其加载到内存中。

最后,操作系统会返回该文件描述符给应用程序,以便应用程序可以使用该文件描述符来访问该文件

文件描述符的作用是提供了一种统一的机制来访问不同类型的文件,包括普通文件、设备文件、管道、套接字等。通过文件描述符,应用程序可以使用系统调用来读取、写入、关闭文件等操作。

二、文件描述符、文件、进程之间的关系

1.每个文件描述符会与一个打开的文件相对应;

2.不同的文件描述符也可能指向同一个文件;

3.相同的文件可以被不同的进程打开,也可以在同一个进程被多次打开

三、文件描述符的应用

1、一个进程能够同时打开多个文件,对应需要多个文件描述符,所以需要用一个文件描述符表对文件描述符进行管理;通常默认大小为1024,也即能容纳1024个文件描述符;

2、文件描述符表中0、1、2三个位置对应的文件描述符固定不变,标准输入、标准输出、标准错误;

3、当打开一个文件时,内核会自动在文件描述符表中寻找一个空闲且最小的文件描述符

4、同一个文件可以被多次打开,但是每打开一次都需要一个新的文件描述符

5、已经被占用的文件描述符在被释放后,可以后面的文件描述符重新被占用;

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

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

相关文章

告别 Navicat!一款能支持几乎所有数据库的开源工具!

数据库连接工具,后端程序员必须要用到工具,常用的是 Navicat,Navicat是收费工具,今天给大家推荐一款开源免费的数据库连接工具 -- dbeaver。 功能特性 1、几乎支持所有数据库产品,包括:MySQL、SQL Server…

文档或书籍扫描为 PDF:ScanPapyrus Crack

ScanPapyrus 可让您快速轻松地将文档或书籍扫描为 PDF,批处理模式使扫描过程快速高效,自动处理书籍并将其拆分为单独的页面 用于快速扫描文档、书籍或打印照片的扫描仪软件 快速扫描文档 使用此扫描仪软件,您无需在扫描仪和计算机之间来回移动…

如何实现远程公共网络下访问Windows Node.js服务端

文章目录 前言1.安装Node.js环境2.创建node.js服务3. 访问node.js 服务4.内网穿透4.1 安装配置cpolar内网穿透4.2 创建隧道映射本地端口 5.固定公网地址 前言 Node.js 是能够在服务器端运行 JavaScript 的开放源代码、跨平台运行环境。Node.js 由 OpenJS Foundation&#xff0…

【Python必做100题】之第二题(找出100以内的偶数并打印)

思路: 1、定义一个空列表来存储取到的偶数 2、每次取到偶数追加到列表的末尾 3、打印的列表即为100以内所有的偶数 重点: 列表追加元素的语法: list.append(i) 代码如下: list [ ] #定义一个空列表来存储偶数 for i in rang…

新公众号没有留言功能怎么办?

为什么公众号没有留言功能?从2018年2月开始,新注册的微信公众号取消了留言功能,原因是为了规避一些营销号通过虚假留言骗取读者信任。不过大部分公众号运营者对TX此举感到失望,一方面大片的留言就像店前排队的顾客,能体…

TeeChart.NET 2023.11.17 Crack

.NET 的 TeeChart 图表控件提供了一个出色的通用组件套件,可满足无数的图表需求,也针对重要的垂直领域,例如金融、科学和统计领域。 数据可视化 数十种完全可定制的交互式图表类型、地图和仪表指示器,以及完整的功能集&#xff0c…

Spring日志完结篇,MyBatis操作数据库(入门)

目录 Spring可以对日志进行分目录打印 日志持久化(让日志进行长期的保存) MyBatis操作数据库(优秀的持久层框架) MyBatis的写法 开发规范: 单元测试的写法 传递参数 Spring可以对日志进行分目录打印 他的意思是说spring相关只打印INFO…

【Spring教程23】Spring框架实战:从零开始学习SpringMVC 之 SpringMVC简介与SpringMVC概述

目录 1,SpringMVC简介2、SpringMVC概述 欢迎大家回到《Java教程之Spring30天快速入门》,本教程所有示例均基于Maven实现,如果您对Maven还很陌生,请移步本人的博文《如何在windows11下安装Maven并配置以及 IDEA配置Maven环境》&…

Java基础课的中下基础课04

目录 二十三、集合相关 23.1 集合 (1)集合的分支 23.2 List有序可重复集合 (1)ArrayList类 (2)泛型 (3)ArrayList常用方法 (4)Vector类 (…

【论文阅读笔记】NeRF+Mip-NeRF+Instant-NGP

目录 前言NeRF神经辐射场体渲染连续体渲染体渲染离散化 方法位置编码分层采样体渲染推导公式(1)到公式(2)部分代码解读相机变换(重要!) Mip-NerfTo do Instant-NGPTo do 前言 NeRF是NeRF系列的…

字节跳动ZNS SSD应用案例分析

字节给出未来数据中心的发展趋势,包括计算、网络、存储三大组件。 字节目前遇到云存储的痛点主要包括:性能、成本、稳定性、定制化。性能方面,SSD的垃圾回收在传统SSD并不可控。成本方面,传统SSD需要预留一定的OP预留空间。稳定性…

【Marp】基于Markdown-Marp快速制作PPT

【Marp】基于Markdown-Marp快速制作PPT 文章目录 【Marp】基于Markdown-Marp快速制作PPT零、参考资料一、Marp基本语法(创建分页,排版图片,更换主题,Marp扩展指令修改样式)1、创建新的PPT页面2、插入图片 & 排版图…

Python学习笔记-类

1 定义类 类是函数的集合,class来定义类 pass并没有实际含义,只是为了代码能执行通过,不报错而已,相当于在代码种占一个位置,后续完善 类是对象的加工厂 2.创建对象 carCar()即是创建对象的过程 3、类的成员 3.1 实例…

【CiteSpace】引文可视化分析软件CiteSpace下载与安装

CiteSpace 译“引文空间”,是一款着眼于分析科学分析中蕴含的潜在知识,是在科学计量学、数据可视化背景下逐渐发展起来的引文可视化分析软件。由于是通过可视化的手段来呈现科学知识的结构、规律和分布情况,因此也将通过此类方法分析得到的可…

Unity中C#如何访问并修改Shader材质

文章目录 前言一、我们用点击按钮来改变Shader传入的颜色值1、在渲染GUI时,绘制一个按钮2、我们使用一个公共的成员变量存储需要进行修改的游戏对象3、最后给绘制的按钮点击增加逻辑即可 二、测试使用的代码1、Shader代码:2、C#脚本 前言 我们写好Shade…

MFC CLXHHandleEngine动态库-自定义设置对话框使用

实现的效果如下所示: void CSampleDlg::OnBnClickedButton2() { // TODO: 在此添加控件通知处理程序代码 CSgxMemDialog dlg(180, 100); dlg.SetEnable(true); dlg.SetWindowTitle(_T("自定义对话框")); dlg.AddStatic(1000, //控件资源…

vue构建项目

vue构建项目 全局安装脚手架 npm install -g vue/cli vue -V(版本号查看) 官方介绍:Installation | Vue CLI 一、vue可视化创建项目 vue 可视工具 vue ui 新建项目(可视化) 功能选择 配置 二、VSCode 命令行创建…

D28|买卖股票的最佳时机+跳跃游戏

122.买卖股票的最佳时机 II 初始思路: 这道题解题的时候比较像在找规律,发现只要计算这个过程中的两数之差然后相加即可。 题解复盘: 可以更加清晰的发现如何从题意中获得贪心的思路。 如何贪心:局部最优:收集每天的…

Redis高效恢复策略:内存快照与AOF

第1章:Redis宕机恢复的重要性和挑战 大家好,我是小黑。今天咱们来聊聊Redis宕机后的恢复策略。想象一下,你的网站突然宕机了,所有的数据都飘了,这种情况下,快速恢复数据就显得尤为重要。Redis作为一个高性…

neuq-acm预备队训练week 8 P1144 最短路计数

题目描述 给出一个 N 个顶点 M条边的无向无权图,顶点编号为 1∼N。问从顶点 1 开始,到其他每个点的最短路有几条。 题目限制 输入格式 第一行包含 22 个正整数 N,M,为图的顶点数与边数。 接下来 M 行,每行 2个正整数 x,y&…