我有一个遗留C库,它接受一个文件,处理文件有效负载并将处理过的有效负载写入输出文件。库中的函数与FILE紧密耦合,即它将FILE句柄传递给函数和函数执行文件IO以检索必要的数据。
我想修改这个库,使其适用于内存数据(无文件IO)。即传递二进制数组并返回二进制数组。
我有2个解决方案
其中哪一个更好或任何其他更好的方法来解决问题
答案 0 :(得分:3)
如果任何其他代码依赖它,我建议不要更改遗留代码。
如果您正在构建适合POSIX的平台,可以使用fmemopen
http://pubs.opengroup.org/onlinepubs/9699919799/functions/fmemopen.html
对于Windows,这可能会有所帮助 C - create file in memory
答案 1 :(得分:0)
我不知道更改遗留代码的确切目的是什么。我理解的问题是读写造成的开销。但是有很多方法可用于解决开销问题:
fmemopen
mmap
使用普通read/write
应该没什么区别;无论哪种方式,一切都通过文件系统缓存/缓冲区发生。tmpfs
将内存作为(临时)文件(也称为RAMDisk
)用作存储。由于文件很容易被淘汰,因为文件本质上是暂时存在的TimesTen
作为样本)