【Linux学习笔记】文件描述符

文件描述符

文件描述符在形式上是一个非负整数。实际上,它是一个索引值,指向内核为每一个进程所维护的该进程打开文件的记录表。当程序打开一个现有文件或者创建一个新文件时,内核向进程返回一个文件描述符。

0&1&2
  • Linux进程默认情况下会有三个缺省打开的文件描述符,分别是标准输入0,标准输出1,标准错误2。
  • 0,1,2对应的物理设备一般是:键盘,显示器,显示器。

这里写图片描述
当我们打开文件时,操作系统在内存中要创建相应的数据结构来描述目标文件,于是就有了file结构体,表示一个已经打开的文件对象。而进程执行open系统调用,所以 必须让进程和文件关联起来。每个进程都有一个指针*file。指向一张表files_struct,该表最重要的部分就是包涵一个指针数组,每个元素都是一个指向打开文件的指针!所以,本质上,文件描述符就是该数组的下标。

文件描述符的分配规则

在files_struct数组中,找到当前没有被使用的最小的一个下标,作为新的文件描述符。

猜你喜欢

转载自blog.csdn.net/lyjwonderful/article/details/80646530