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

本文介绍了Linux中文件描述符(fd)的概念及其用途,并解释了C语言中文件指针(FILE*)的工作原理。同时对比了文件描述符与文件指针之间的区别。

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。
这里写图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值