文章目录
✔理解文件描述符
文件描述符的本质就是一个小整数
1.操作系统会为每一个进程在磁盘当中创建一个以进程号命名的文件夹,在该文件夹下有一个
fd
文件夹,保存的信息为该进程打开的文件描述信息。
2.当我们打开文件时,操作系统在内存中要创建响应的数据结构来描述文件,于是有了file
结构体,表示一个已经打开的文件对象
3.每一个进程都有一个指针file*
,指向一张表files_struct
,该表包含一个指针数组,每个元素都是一个指向打开文件的指针
3.当我们新创建出来一个进程,势必会打开3个文件描述符,分别对应标准输入(0),标准输出(1),标准错误(2)
4.文件描述符其实就是内核当中的fd_array
数组下标,是从0开始的小整数,只要拿着文件描述符就可以找到对应的文件
文件描述符的分配原则
先看一段代码
#include <stdio.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
int main()
{
int fd = open("My-file", O_RDONLY)
if(fd < 0)
{
perror("open");
return -1;
}