先明确一个概念:文件描述符是一个非负整数,是确定一个文件的一种手段:

下面慢慢 从外到里 一步一步的接近文件描述符

首先进程在运行的时候会打开多个文件,所以用于描述进程的pcb里面一定有文件描述符

//下面我们来到了pcb

而pcb包含了一个结构体  叫做 task_struct而这个task_struct结构体里面包含内容是如图

所以task_struct里面是有一条信息 是用来描述打开文件信息 而这个指针的类型是 files_struct

而这个files_struct里面包含了一个文件数组  而文件描述符就是这个数组的下标 并且这里对数组下标使用有一个要求 比如使用了 0 1 2  当没有使用0 以后 下一次使用的时候会给你分配0下标而不是下标3

所以到了现在很明确的知道,为什么文件描述符是一个非负整数。

下面来前后贯通一下 有一个数组 数组的每一个元素的类型是文件结构体 而我们的进程是通过这个数组来管理进程所打开的文件 ,而文件描述符是这个数组的下标,那么就可以得到一个结论,在一个进程内 使用一个文件描述符(数组下标)可以在文件数组里面找到一个具体的文件,那么就可以对这个文件进行操作。

所以文件描述符在同进程内是唯一的,在2个不同的进程中可能会出现相同的文件描述符,而指向的是不同的文件。

简单理解描述文件描述符相关推荐

  1. 简单理解DLL文件是什么,如何使用?

    DLL文件是什么? DLL文件是动态链接库的缩写,可以在多种程序中使用. 如何编写DLL文件 可以使用C++.C#.VB之类的语言编写,其中包含了一个或者多个函数,以供其他程序调用. 例如,如何在Py ...

  2. linux dup用法,Linux:dup和dup2文件描述符及函数解析,dupdup2

    Linux:dup和dup2文件描述符及函数解析,dupdup2 一.文件描述符 1.1 文件描述符概念 我们知道在Linux下一切皆文件,因此我们需要一个东西对这些文件进行管理,此时就需要文件描述符 ...

  3. Linux下利用文件描述符恢复的成功失败实验

    数据误删除是作为初级运维人员常常遇到的"低级错误",一些有经验的老手有时也在疲劳.不冷静的情况下"马失前蹄".一旦误删除数据文件,尽快采用影响最小.最迅速的手段 ...

  4. iOS 理解证书与描述文件

    简单的理一下iOS应用打包用到的Certificate与Provision Profile的关系 1.Certificate --证书 1.1证书是什么? 百度百科是这么解释的: 由此,知道证书是由权 ...

  5. 如何用python画帆船_python学习笔记6——文件操作来生成船只侧面图像的描述文件...

    最近在做船只检测的工作需要大量的正样本,之前的一些样本各种形态的船只都有,这一次训练分类器希望使用只含船只侧面的图像,这样检测船的侧面的成功率可能会提高一点.这样就需要大量的船只侧面图像,并生成描述文 ...

  6. 谈谈自己对文件描述符的理解

    文件描述符其实和C语言的的FILE*差不多,就是用一个整数来表述一个打开的文件.而C语言中使用的是指针来描述的.下面的例子是摘自上一遍转载的文章中的: 1 2 3 4 5 6 7 8 9 10 11 ...

  7. ftpclient读取服务器文件能获得文件名文件大小0_理解Linux的文件描述符FD与Inode

    FD 文件描述符 一.概念 Linux 系统中,把一切都看做是文件,当进程打开现有文件或创建新文件时,内核向进程返回一个文件描述符,文件描述符就是内核为了高效管理已被打开的文件所创建的索引,用来指向被 ...

  8. linux中文件描述符fd和文件指针flip的理解

    整理自:http://www.cnblogs.com/Jezze/archive/2011/12/23/2299861.html 简单归纳:fd(file descriptor)只是一个整数,在ope ...

  9. 如何理解Linux shell中的“2>1”(将文件描述2(标准错误输出)的内容重定向到文件描述符1(标准输出))(尼玛>符号竟然不支持搜索,害我搜搜不到,只能搜)

    文章目录 前言 有何妙用 如何理解 总结 前言 有时候我们常看到类似这样的脚本调用: ./test.sh > log.txt 2>&1 这里的2>&1是什么意思?该如 ...

最新文章

  1. r2dbc_使用Spring Data R2DBC进行异步RDBMS访问
  2. PHP面向对象2之变量、方法
  3. csvn(apache+svn)管理工具搭建
  4. 避免内存泄漏 - C++快速入门38
  5. PDA服务器显示响应为空,jmeter 状态码为200,但是响应数据为何为空
  6. sqlalchemy query
  7. Tensorflow卷积神经网络识别MINST手写数字
  8. java cancel_java – Future.cancel(boolean)方法的实用程序
  9. 网络编程 socket详解 TCP socket和UDP socket
  10. 文件内存映射(一):它是什么
  11. 蓝牙小票机php接口,Android蓝牙打印小票,仿美团外卖小票打印
  12. 使用ZYNQ实现单LUT内容的动态修改(一)PL端OOC设计流程
  13. python数据类型的转换
  14. 10项最佳在线免费学习工具
  15. itunes一直显示正在验证iphone恢复_换新iPhone了,四个方法轻松解决新旧iPhone的资料迁移...
  16. Flink数据流编程模型(Dataflow Programming Model)
  17. 中国压辊行业市场供需与战略研究报告
  18. 微型计算机接口技术学啥的,微型计算机接口技术
  19. C语言字符串中使用宏替换
  20. 题目:请输入星期几的第一个字母来判断一下是星期几,如果第一个字母一样,则继续判断第二个字母。

热门文章

  1. 基于javaweb的股票基金分析交易系统ssm springboot
  2. 蛇蛇大作战-进度条0
  3. mysql 索引不重复的值,【锁】在数据库无法使用唯一索引时如何保证数据的不重复?...
  4. 突然就想起了那个海边
  5. QElapsedTimer 计时器
  6. 是数据中心定义了DCIM
  7. 《了不起的markdown》学习记录
  8. 基于岭回归的数据增强与深度学习模型
  9. php改入口,Thinkphp5修改入口文件
  10. 终于发现免费的比较文件工具了~~~