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

来源:互联网 发布:数据新常态 编辑:程序博客网 时间:2024/05/29 14:06

1.文件描述符:
linux中,当一个进程打开一个文件或者是创建一个新文件时,内核向进程返回一个文件描述符来标示该文件。文件描述符是一个非负整数,实际上它是一个索引,指向内核为进程所维护的一个文件记录表。
这里写图片描述
任何程序运行起来都会打开三个默认的流,标准输入流,标准输出流,标准错误流通常情况下对应的硬件为键盘,显示器,显示器。
三个流的文件标示符为 0,1,2
因为默认的三个流已经设置好,后面打开的文件,文件描述符从3,4,5开始依次向后。
文件描述符重定向。
当close调三个默认流后,文件的描述符会从当前位置最小的开始。
2.文件指针FILE*:
文件指针变量标示符,一般形式为大写,可以看出是系统定义的一个结构体,该结构体中含有一系列文件名,文件状态,当前位置信息,文件描述符fd,还有缓冲区等。
在编写源程序的时候不需要关系FILE结构的细节。
C语言定义一个FILE*的对象时:
FILE *fp;
表示fp是一个指向FILE结构体的指针,通过fp可以读写该文件,或者操作文件,习惯的称为fp为文件指针。
3.文件标示符fd和文件指针FILE*的区别
FILE*中的内容包含文件描述符。
使用fopen、fclose、fread、fwirte对文件进行操作时,在lib层。
而文件描述符在系统调用层。系统调用的接口为write/read、close/open
它们的返回值为fd。
这里写图片描述

0 0
原创粉丝点击