【问题标题】:How can I make a library that writes to FILE * write the data to memory instead? (C programming)如何创建一个写入 FILE * 的库将数据写入内存? (C 编程)
【发布时间】:2010-07-25 21:48:58
【问题描述】:

我面临一个问题,即 C 库仅公开一个将数据写入 C FILE 结构的接口。这意味着所有数据都保存到磁盘。我希望这个库将数据保存到内存中。

有没有办法在我的代码中模拟FILE 结构并使其将数据保存在内存中?我想FILE 有各种指向函数的指针,我可以编写自己的函数并让它们分配内存,然后在fwrite 上将数据写入内存。

这个可以吗?

谢谢,博达·赛多。

【问题讨论】:

标签: c file memory


【解决方案1】:

一个可移植的解决方案是使用fmemopenopen_memstream,如果这些功能可用(它们长期以来一直是 GNU libc 的一部分,并且它们在 2008 年被添加到 POSIX)并简单地写入临时如果不是,则将文件读回内存。

【讨论】:

    【解决方案2】:

    你可以看看 fmemopen。

    【讨论】:

      【解决方案3】:

      在 UNIX 系统上,您可以使用 fdopen(3) 获取使用您之前打开的流的 FILE*。然后你所要做的就是编写一些代码从管道的另一端读取并将其铲到内存中。

      【讨论】:

      • 我喜欢这个解决方案,但它并不那么容易。它将需要线程或分叉并使用共享内存。
      猜你喜欢
      • 1970-01-01
      • 2013-10-07
      • 1970-01-01
      • 2016-01-13
      • 1970-01-01
      • 2010-10-07
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多