【问题标题】:What is the difference between a stream and a file?流和文件有什么区别?
【发布时间】:2014-01-23 03:04:09
【问题描述】:

C 标准讨论了流。例如fopen(3) 手册页告诉fopen 是一个流打开函数

谁能解释一下到底是什么,以及它们与文件有何关系?

【问题讨论】:

  • 到目前为止你的理解是什么?你想过用谷歌吗?
  • 您能提供该引用的上下文吗?目前尚不清楚它指的是什么;如果您在一本书中阅读它,更多的上下文可能会帮助我们更好地阐明它。
  • 并非所有文件都具有相同的功能。例如,磁盘文件可以支持随机访问,而某些打印机则不能。
  • 在“你的意思...”的上下文中,“你”是谁?

标签: c file io stream


【解决方案1】:

在 C 标准库的上下文中,流是用于执行某些 I/O 操作的通用接口。您可以从流中读取,写入流,某些流是可搜索的。将文件作为流打开只是将流作为应用程序的 I/O 接口的一种方法。

Let me quote:

11.1.1 流和文件描述符

当您想要对文件进行输入或输出时,您可以选择两种基本机制来表示程序与文件之间的连接:文件描述符和流。文件描述符表示为int 类型的对象,而流表示为FILE * 对象。

文件描述符为输入和输出操作提供了一个原始的低级接口。文件描述符和流都可以表示与设备(例如终端)的连接,或用于与另一个进程通信的管道或套接字,以及普通文件。 [...]

... and further:

12.1 流

由于历史原因,表示流的 C 数据结构的类型称为FILE 而不是“流”。由于大多数库函数都处理FILE * 类型的对象,因此有时术语文件指针 也用于表示“流”。这导致许多关于 C 的书籍中的术语令人遗憾地混淆。

C 中的 I/O 流示例:

如需进一步阅读,请查看以下链接:

基于流的 API 建立在低级 文件描述符 API 之上,并提供额外的功能。然而,一些低级功能只能通过低级 API 使用,例如,内存映射 I/O非阻塞 I/O 或“事件驱动”输入/输出:

【讨论】:

    猜你喜欢
    • 2013-08-22
    • 2016-11-22
    • 2011-01-17
    • 1970-01-01
    • 2023-04-02
    • 2016-12-18
    • 1970-01-01
    • 2021-04-06
    相关资源
    最近更新 更多