什么是文件描述符和文件指针之间的区别?

时间:2011-11-19 04:28:32

标签: c operating-system file-descriptor file-pointer

  

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

如果我打开这样的文件:

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

那么fp是文件指针还是文件描述符?他们之间有什么区别?

3 个答案:

答案 0 :(得分:4)

这是指向FILE结构的指针,如果这就是你所要求的。文件描述符是整数。 FILE结构及其相关API是C标准的一部分。文件描述符及其相关功能不是。在实践中,您可以交替使用任一组函数,尽管此处和那里的默认行为存在一些显着差异。您可以阅读手册页以确定哪些函数采用哪种参数。在具有文件描述符的系统上,通常可以使用fdopen(3)函数从打开的文件描述符中获取FILE结构,并使用fileno(3)从另一个方向获取。{/ p>

答案 1 :(得分:3)

fp是一个FILE指针

文件指针:

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

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

答案 2 :(得分:2)

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