我有一个遗留C库,它接受一个文件,处理文件有效负载,并将处理后的有效负载写入输出文件。库中的函数与文件紧密耦合,即将文件句柄传递给函数,函数执行文件IO来检索必要的数据。
我想修改这个库,使它能够在内存数据中工作(没有文件IO)。即传递一个二进制数组并返回二进制数组。
我想到了两个解决方案
这其中哪一个更好,或者其他更好的解决问题的方法?
发布于 2014-08-17 13:41:20
如果任何其他代码依赖于遗留代码,我建议不要更改它。
如果您正在构建一个兼容POSIX的平台,则可以使用fmemopen http://pubs.opengroup.org/onlinepubs/9699919799/functions/fmemopen.html。
对于Windows来说,这可能有助于C - create file in memory
发布于 2014-08-17 20:58:18
我不知道改变遗留code.The问题的确切目的是什么,我理解的是读写造成的开销。但是有许多方法可用于解决开销问题,如下所示:
fmemopenmmap用于普通的read/write,这一点几乎没有什么区别;无论是哪种方式,所有事情都是通过文件系统缓存/缓冲区发生的。tmpfs作为(临时)文件(也称为RAMDisk存储)来利用内存。因为文件很容易被洗掉,因为文件已经是临时的了。TimesTen)https://stackoverflow.com/questions/25349472
复制相似问题