文件描述符 File Descriptor

进程想要读写文件需要使用文件描述符。PCB进程控制块的本质是一个结构体,其中一个成员指向文件描述符表,文件描述符表将文件描述符和该进程打开的文件一一对应起来,文件描述符的本质是一个非负整数,作为索引与打开的文件相对应,规定0是标准输入,1是标准输出,2是标准错误,从3开始才能对应用户打开的文件。一个进程默认最多打开1024个文件,文件描述符最大为1023。

文件描述符表中的文件指针指向文件结构体,文件结构体是

COPY

struct file
{
        文件的路径、状态等文件信息
};

但是操作系统将文件指针隐藏起来了,只让用户接触到文件描述符。

新打开文件的文件描述符是可用的文件描述符中最小的:如果3、4、5都占用了,现在将3对应的文件关闭(close),再打开文件会分配3作为文件描述符。

虽然0、1、2是标准输入、输出、错误,但是使用时最好使用对应的宏,这样看起来更直观:

0→STDIN_FILENO

1→STDOUT_FILENO

2→STDERR_FILENO

查看文件结构体

  • 可以在系统里找