【Linux:文件描述符】

news2024/10/7 6:41:43

文件描述符:

文件描述符的分配原则:最小未分配原则

  • 每一个进程中有一个task_struct结构体(PCB),而task_struct中含有struct file_sturct*file的指针,该指针指向了一个struct files_struct的结构体
  • 该结构体中含有一个fd_array的数组,每一个数组的元素是一个struct_file*;
  • 而这个数组的下标叫做文件描述符,每一个元素都指向 了struc_file结构体
  • 该结构体保存了文件的原信息,包括文件大小,inode节点号,文件时间等等信息

而文件描述符的分配方式是找到当前没有被使用的最小的下标分配给新文件

当close(0)关闭下标为0的元素,该文件按就会放在0的位置

文件流指针与文件描述符的区别:

文件流指针FILE是一个重命名的结构体(struct _IO_FILE),该结构体中含有三个重要的变量:


写缓冲区:

  • 这里的缓冲区与exit函数所刷新的缓冲区是同一个东西
  • printf函数把需要输出的内容都放在缓冲区中,加上换行符就是让在换行时刷新缓冲区
  • fileno将内容输入到文件或者屏幕上

int _fileno

  • 保存了文件描述符
  • 在通过库函数操作文件流指针的本质就是通过fileno操作内核中的文件流指针

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

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

相关文章

win10系统打开Windows更新是空白的如何解决?

最近装wsl的时候,遇到了这个问题。查阅了很多相关资料,发现导致wsl --install安装不了的主要原因都集中在于windows更新组件损坏导致的,经过排查,我的这个组件确实不能够正常使用,可能是因为之前使用了windows激活工具…

网络治理新模式:Web3时代的社会价值重构

随着Web3技术的崛起,传统的网络治理模式正在经历革新,这不仅仅是技术的进步,更是对社会价值观念的挑战和重构。本文将深入探讨Web3时代的网络治理新模式,其背后的技术基础、社会影响以及未来的发展方向。 1. 引言 Web3时代&#…

【机器学习300问】134、什么是主成分分析(PCA)?

假设你的房间堆满了各种各样的物品,书籍、衣服、玩具等等,它们杂乱无章地散落各处。现在,你想要清理房间,但又不想扔掉任何东西,只是希望让房间看起来更整洁,更容易管理。 你开始思考,能否将物品…

Docker之jekins的安装

jekins官网地址:Jenkins Plugins (https://plugins.jenkins.io/) jekins 的docker 官方地址:https://hub.docker.com/r/jenkins/jenkins jekins 的docker 允许命令文档地址: docker/README.md at master jenkinsci…

Linux源码阅读笔记07-进程管理4大常用API函数

find_get_pid find_get_pid(...)函数功能:根据进程编号获取对应的进程描述符,具体Linux内核源码对应函数设计如下: 获取进程描述符,且描述符的count1,表示进程多一个用户 pid_task pid_task(...)函数功能&#xff1…

通达信短线抄底主升浪幅图指标公式源码

通达信短线抄底主升浪幅图指标公式源码: A1:REF(C,1); A2:SMA(MAX(C-A1,0),5,1)/SMA(ABS(C-A1),5,1)*1000; A3:BARSLAST(REF(CROSS("RSI.RSI1"(6,12,24),"RSI.RSI2"(6,12,24)),1)); A4:A2-LLV(A2,10); A5:(MA(A4,2)*3A4*13)/16; A6:IF(A5>1…

cuda 学习笔记4

一 基本函数 在GPU上开辟空间,无论定义的数据是float还是int ,还是****gpu_int,分配空间的函数都是下面固定的形式 (void**)& 1.函数定义,global void 是配套使用的,是在GPU上定义,也就是GPU上执行,CPU上调用的函数…

关于0xc000007b的一种解决方案

今天我在安装qview并运行时时,遇到了这个问题。 我在网上查找了许多解决方案,但它们大多都说是某些dll缺失或错误引起的。 这些说法应该是正确的,但我用了dll修复工具后,一点用都没有。 后来捣鼓半天后,我发现很可能…

Golang 百题(实战快速掌握语法)_2

返回集合中满足指定条件的最后一个元素 本实验将实现判断给定集合中的元素是否符合,并返回符合的最后一个元素。 知识点 forfmt.Error 适合人群 本课程属于基础课程。需要用户掌握 Go 语言编程基础知识、计算机基础知识和 Linux 环境的基本用法。 许可证 内容…

【可控图像生成系列论文(五)】ControlNet 和 IP-Adapter 之间的区别有哪些?

系列文章目录 【可控图像生成系列论文(一)】 简要介绍了 MimicBrush 的整体流程和方法;【可控图像生成系列论文(二)】 就MimicBrush 的具体模型结构、训练数据和纹理迁移进行了更详细的介绍。【可控图像生成系列论文&…

MySQL高级-索引-设计原则小结

文章目录 1、设计原则2、索引小结2.1、索引概述2.2、索引结构2.3、索引分类2.4、索引语法2.5、SQL性能分析2.6、索引使用2.7、索引设计原则 1、设计原则 针对于数据量较大,且查询比较频繁的表建立索引。针对于常作为查询条件(where)、排序&am…

东软睿驰总裁兼CTO杜强受邀出席 CICV 2024智能网联汽车技术首脑(CTO)闭门峰会

近日,第十一届国际智能网联汽车技术年会(CICV 2024)在北京举办,会议期间组织智能网联汽车技术首脑(CTO)闭门峰会,邀请40余位技术领袖围绕智能网联汽车产业生态建设以及智能网联汽车数据、算力和…

使用k8s变更线上版本号

第一步,在镜像仓库中找到历史版本号 第二步,在rancher中在工作负载里 第三步,在rancher找到这个版本号,可以更改之前的版本号 这样就可以很方便的退回到之前的版本了

【技巧】如何检查多个GPU之间是否支持P2P通信

转载请注明出处:小锋学长生活大爆炸[xfxuezhagn.cn] 如果本文帮助到了你,欢迎[点赞、收藏、关注]哦~ 需要用到cuda_samples:GitHub - NVIDIA/cuda-samples 该工具的详细解释可以看这个: 【知识】详细介绍 CUDA Samples 示例工程…

时间序列分析入门:概念、模型与应用【ARMA、ARIMA模型】

在这篇博客中,我们将全面探讨时间序列分析的基本概念和分类,深入理解平稳性及其检验方法,并介绍自回归模型(AR)、滑动平均模型(MA)、自回归滑动平均模型(ARMA)以及自回归…

吐血推荐!3款视频生成工具,全部国产,都免费

AI视频大模型的爆发,让创作爆款视频不再是专业人士的能力。 今天二师兄给大家推荐3款免费的视频生成工具。 01 可灵 推荐指数 : 五颗星 先看效果 可灵大模型测试 可灵大模型是快手AI团队自主研发的视频生成大模型,具备强大的视频创作能力&a…

FlinkX学习

FlinkX学习 FlinkX安装 由于flinkx已经改名chunjun 官网已不存在 (https://gitee.com/lugela/flinkx#flinkx)这里可以看到flinkx的操作文档 1、上传并解压 unzip flinkx-1.10.zip -d /usr/local/soft/2、配置环境变量 FLINKX_HOME/usr/local/soft/flinkx-1.10 export PATH$F…

PHP-CGI的漏洞(CVE-2024-4577)

通过前两篇文章的铺垫,现在我们可以了解 CVE-2024-4577这个漏洞的原理 漏洞原理 CVE-2024-4577是CVE-2012-1823这个老漏洞的绕过,php cgi的老漏洞至今已经12年,具体可以参考我的另一个文档 简单来说,就是使用cgi模式运行的PHP&…

零拷贝技术(zero copy),DMA,mmap,sendfile

在一些高性能的IO场景下我们经常能听到零拷贝技术,这是个不错的话题。 零拷贝指的是内核态与用户态之间的数据拷贝,而这两个区域的数据拷贝只能依靠CPU,但是CPU最重要的作用应该是运算。 一、DMA的由来 在没有DMA之前,磁盘的IO…

【NPS】哑终端设备如何实现域VLAN动态分配

在【NPS】微软NPS配置802.1x,验证域账号,动态分配VLAN(有线网络续篇)中,已经通过C3PL策略配置实现了802.1x验证没有通过时,自动分配一个Guest VLAN,以确保用户至少能够访问基本的网络服务。问题…