【问题标题】:What is difference between file descriptor and file pointer? [duplicate]文件描述符和文件指针有什么区别? [复制]
【发布时间】:2012-01-01 18:38:43
【问题描述】:

可能重复:
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


    【解决方案1】:

    fp 是一个文件指针

    文件指针:

    1. 高级接口
    2. 传递给 fread() 和 fwrite() 函数
    3. 包括缓冲、错误指示和EOF检测等。
    4. 提供更高的便携性和效率。

    文件描述符:

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

    基于此link

    【讨论】:

      【解决方案2】:

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

      【讨论】:

      • 值得注意的是 FILE 是一个不透明的指针(它指向的内存对于使用接口的代码来说是没有意义的)。另外值得注意的是 POSIX open 返回一个文件描述符。
      • 值得注意的是fdopen 创建了一个新的 FILE 对象(需要关闭,并且在关闭时文件描述符也会关闭),而@ 987654328@ 只是返回FILE 下的现有 文件描述符。
      【解决方案3】:

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

      【讨论】:

        猜你喜欢
        • 2011-01-26
        • 1970-01-01
        • 2020-09-06
        • 2014-11-07
        • 2014-04-07
        • 2014-04-25
        • 2018-03-14
        • 2016-03-07
        • 1970-01-01
        相关资源
        最近更新 更多