文件描述符和文件指针之间有什么区别? [重复]

问题描述 投票:5回答:3

可能重复:What's the difference between a file descriptor and file pointer?

如果我这样打开文件:

FILE *fp = fopen("mr32.txr","r");

然后fp是文件指针还是文件描述符?它们之间有什么区别?

c operating-system file-descriptor file-pointer
3个回答
4
投票

fp是FILE指针

文件指针:

  1. 是高级界面
  2. 传递给fread()和fwrite()函数
  3. 包括缓冲,错误指示和EOF检测等。>
  4. 提供更高的可移植性和效率。
  5. 文件描述符:

  1. 低/内核级别处理程序
  2. 传递给UNIX系统调用的read()和write()
  3. 不包括缓冲和此类功能
  4. 便携性差,效率低下
  5. 基于此link


4
投票

这是您要的FILE结构的指针。文件描述符是整数。 FILE结构及其相关的API是C标准的一部分。文件描述符及其相关功能不是。在实践中,尽管此处和此处的默认行为存在一些显着差异,但是您可以互换使用这两组函数。您可以阅读手册页以了解哪些函数采用哪种参数。在具有文件描述符的系统上,通常可以使用fdopen(3)函数从打开的文件描述符中获取FILE结构,然后使用fileno(3)进行其他操作。


2
投票

FILE是一个包含有关文件的信息的结构,包括文件描述符。

© www.soinside.com 2019 - 2024. All rights reserved.