首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >文件IO到InMemory IO

文件IO到InMemory IO
EN

Stack Overflow用户
提问于 2014-08-17 13:09:21
回答 2查看 203关注 0票数 2

我有一个遗留C库,它接受一个文件,处理文件有效负载,并将处理后的有效负载写入输出文件。库中的函数与文件紧密耦合,即将文件句柄传递给函数,函数执行文件IO来检索必要的数据。

我想修改这个库,使它能够在内存数据中工作(没有文件IO)。即传递一个二进制数组并返回二进制数组。

我想到了两个解决方案

  1. 实现一个InMemory文件模块(该模块将所有操作植入C文件),并使用typedef或#define新实现覆盖默认文件操作
  2. 将二进制数组传递到库的所有函数,并从库中检索必要的数据。

这其中哪一个更好,或者其他更好的解决问题的方法?

EN

回答 2

Stack Overflow用户

发布于 2014-08-17 13:41:20

如果任何其他代码依赖于遗留代码,我建议不要更改它。

如果您正在构建一个兼容POSIX的平台,则可以使用fmemopen http://pubs.opengroup.org/onlinepubs/9699919799/functions/fmemopen.html

对于Windows来说,这可能有助于C - create file in memory

票数 3
EN

Stack Overflow用户

发布于 2014-08-17 20:58:18

我不知道改变遗留code.The问题的确切目的是什么,我理解的是读写造成的开销。但是有许多方法可用于解决开销问题,如下所示:

  1. 如前所述,您可以使用fmemopen
  2. 您还可以将mmap用于普通的read/write,这一点几乎没有什么区别;无论是哪种方式,所有事情都是通过文件系统缓存/缓冲区发生的。
  3. 您还可以使用tmpfs作为(临时)文件(也称为RAMDisk存储)来利用内存。因为文件很容易被洗掉,因为文件已经是临时的了。
  4. 另一种解决方案--您可以使用内存中的数据库(示例使用TimesTen)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25349472

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档