Linux中文件描述符fb和文件指针FILE*的联系与区别

文件描述符:

linux中,当一个进程打开一个文件或者是创建一个新文件时,内核向进程返回一个文件描述符来标示该文件。

文件描述符是一个非负整数,实际上它是一个索引,指向内核为进程所维护的一个文件记录表
在这里插入图片描述

任何程序运行起来都会打开三个默认的流,标准输入流,标准输出流,标准错误流通常情况下对应的硬件为键盘,显示器,显示器。 三个流的文件标示符为 0,1,2 。因为默认的三个流已经设置好,后面打开的文件,文件描述符从3,4,5开始依次向后。

文件指针FILE*

文件指针变量标示符,一般形式为大写,可以看出是系统定义的一个结构体,该结构体中含有一系列文件名,文件状态,当前位置信息,文件描述符fd,还有缓冲区等

C语言定义一个FILE*的对象时:

// 表示fp是一个指向FILE结构体的指针
// 通过fp可以读写该文件,或者操作文件,习惯的称为fp为文件指针。
FILE *fp; 

文件标示符fd和文件指针FILE*的区别

FILE*中的内容包含文件描述符。 使用fopen、fclose、fread、fwirte对文件进行操作时,在lib层。 而文件描述符在系统调用层。系统调用的接口为write/read、close/open 它们的返回值为fd。

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/jason_cuijiahui/article/details/84632757