小笔记:对于文件描述符的理解

文件描述符是一个数组下标,也就是一个索引值,指向内核为每一个进程所维护的该进程打开文件的记录表。

内核利用文件描述符来访问文件。

打开现存文件或新建文件时,内存会返回一个文件描述符。读写文件也需要使用文件描述符来指定待读写的文件。

文件描述符标记的具体空间中存放FILE*,即文件指针。

错题记录:

1.以下叙述正确的是 [多选] ACD

A.程序中打开文件所返回的文件描述符, 本质上在PCB中是文件描述符表的下标
B.多个文件描述符可以通过dup2函数进行重定向后操作同一个文件
C.在进程中多次打开同一个文件返回的文件描述符是一致的
D.文件流指针就是struct _IO_FILE结构体, 该结构体当中的int _fileno 保存的文件描述符, 是一对一的关系

解析
A文件描述符实际上是内核中文件描述信息表中数组下标,用户根据下标在进程pcb中的文件描述信息表中找到相应文件描述信息,实现对文件的操作;
B不同下标的节点可以存放相同的文件描述信息结构指针
C 最小未使用分配规则
D 一个文件流指针一定对应一个文件描述符, 但是一个文件描述符可以为多个文件流指针保存。前者是1对1的关系, 后者是1对多的关系
 

2.以下描述正确的是

A.文件描述符和文件流指针没有任何关系

B.文件流指针结构中封装了文件描述符

C.通过open打开文件返回的FILE *fp可以直接使用read读取数据

D.通过open打开文件返回的FILE *fp可以直接使用fread读取数据

文件流指针是标准库IO操作句柄,是一个FILE*结构体指针,其中内部封装有文件描述符,其对应的操作接口有:fopen, fread, fwrite, fseek, fclose...

文件描述符是系统调用接口操作句柄,是一个非负整数,期对应的操作接口有: open, read, write, lseek, close...

根据以上理解:

  • A选项错误,文件流指针中封装有文件描述符,他们是封装包含的关系
  • B选项正确
  • C和D选项错误,open是系统调用接口,返回的是文件描述符,并非文件流指针

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值