详解—[Linux 文件描述符]

一、文件描述符的概念 

文件描述符是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、已经被占用的文件描述符在被释放后,可以后面的文件描述符重新被占用;

相关推荐

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2023-12-14 04:00:02       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2023-12-14 04:00:02       100 阅读
  3. 在Django里面运行非项目文件

    2023-12-14 04:00:02       82 阅读
  4. Python语言-面向对象

    2023-12-14 04:00:02       91 阅读

热门阅读

  1. 智能查券机器人:导购APP的新趋势

    2023-12-14 04:00:02       59 阅读
  2. Linux中的磁盘挂载与取消

    2023-12-14 04:00:02       58 阅读
  3. 【FPGA】篮球比赛计分器

    2023-12-14 04:00:02       51 阅读
  4. RocketMQ的监控和管理工具有哪些❓

    2023-12-14 04:00:02       62 阅读
  5. python 多进程

    2023-12-14 04:00:02       48 阅读
  6. mysql select count 非常慢

    2023-12-14 04:00:02       53 阅读
  7. 项目优化过程

    2023-12-14 04:00:02       53 阅读
  8. ExecuteScalar()方法

    2023-12-14 04:00:02       58 阅读
  9. Android : LifeCycles_简单应用

    2023-12-14 04:00:02       65 阅读
  10. 【MyBatis】拦截查询结果同时动态替换

    2023-12-14 04:00:02       58 阅读
  11. 20230907docker安装MySQL配置

    2023-12-14 04:00:02       55 阅读
  12. linux 13-2day 日志轮转 日志目录 轮转参数

    2023-12-14 04:00:02       58 阅读
  13. libtorch常用函数记录

    2023-12-14 04:00:02       56 阅读
  14. 猎界新能源

    2023-12-14 04:00:02       63 阅读