【发布时间】:2010-07-25 21:48:58
【问题描述】:
我面临一个问题,即 C 库仅公开一个将数据写入 C FILE 结构的接口。这意味着所有数据都保存到磁盘。我希望这个库将数据保存到内存中。
有没有办法在我的代码中模拟FILE 结构并使其将数据保存在内存中?我想FILE 有各种指向函数的指针,我可以编写自己的函数并让它们分配内存,然后在fwrite 上将数据写入内存。
这个可以吗?
谢谢,博达·赛多。
【问题讨论】:
我面临一个问题,即 C 库仅公开一个将数据写入 C FILE 结构的接口。这意味着所有数据都保存到磁盘。我希望这个库将数据保存到内存中。
有没有办法在我的代码中模拟FILE 结构并使其将数据保存在内存中?我想FILE 有各种指向函数的指针,我可以编写自己的函数并让它们分配内存,然后在fwrite 上将数据写入内存。
这个可以吗?
谢谢,博达·赛多。
【问题讨论】:
一个可移植的解决方案是使用fmemopen 或open_memstream,如果这些功能可用(它们长期以来一直是 GNU libc 的一部分,并且它们在 2008 年被添加到 POSIX)并简单地写入临时如果不是,则将文件读回内存。
【讨论】:
你可以看看 fmemopen。
【讨论】:
在 UNIX 系统上,您可以使用 fdopen(3) 获取使用您之前打开的流的 FILE*。然后你所要做的就是编写一些代码从管道的另一端读取并将其铲到内存中。
【讨论】: