【问题标题】:application of open() and fopen() [duplicate]open() 和 fopen() 的应用
【发布时间】:2014-04-07 12:33:39
【问题描述】:

open()fopen() 函数之间存在差异。一个是系统调用,另一个是库函数。我试图弄清楚这两个功能的应用是什么,但我发现没有任何用处。 您能否给出一些场景在哪里使用open() 以及应该在哪里使用fopen()

【问题讨论】:

  • open 函数只是某些 POSIX 系统上的系统调用。例如在Windows 它是一个普通的库函数,就像fopen

标签: c file-descriptor


【解决方案1】:

有时您需要一个文件描述符。 open() 给你一个。有时您需要FILE*,在这种情况下使用fopen()。您始终可以通过fileno() 将您的FILE* 转换为文件描述符,而实际上并不支持相反的转换。这主要取决于您打算使用文件句柄调用哪些下游函数。

【讨论】:

  • 在哪些情况下 open() 比 fopen() 更合适。
  • 当您只想调用需要文件描述符的函数,而不需要调用 FILE* 的函数时。
  • 特别是在linux中我们使用open()来使用一些设备特定的文件。
【解决方案2】:

open() 将返回文件描述符。我们覆盖文件,而使用fopen() 我们无法覆盖文件。我们使用文件描述符进行读写使用另一个 read() write() 等函数。但在 fopen() 中,它将返回文件描述符,我们必须 使用 fprintf() 写入文件流。 sscanf() 从流中读取。

【讨论】:

  • 我们也可以使用lseek等其他函数在文件中间写入。
猜你喜欢
  • 2011-04-06
  • 2010-12-12
  • 1970-01-01
  • 1970-01-01
  • 2017-12-01
  • 1970-01-01
  • 2021-12-02
  • 1970-01-01
  • 2011-01-01
相关资源
最近更新 更多