文件路径到内存文件

时间:2015-04-09 20:31:05

标签: c posix

我有一个void *buffer,它是RAM中文件的一个实例。

文件类型的格式必须由给定的API解析。

不幸的是,通过API打开此文件类型的唯一方法是为API提供文件路径:

sample_api_open(char *file_name, ...);

我理解shm_open返回文件描述符,但API只接受文件路径。

是否有解决方法在内存中读取此类文件?

2 个答案:

答案 0 :(得分:0)

您可以打开一个临时文件mmap()而不是使用POSIX共享内存。然后让缓冲区在mmap() - ed区域结束,这样你就可以在临时文件上调用API了。

答案 1 :(得分:0)

  

是否有解决方法在内存中读取此类文件?

将缓冲区的内容转储到/tmp上的临时文件中。

在绝大多数现代* NIX系统中,/tmp是一个合成的内存文件系统。仅在内存不足的情况下,内容可能会因交换而到达磁盘。

如果信息量太大,为避免重复,在将内容转储到/tmp后,您可以释放本地内存和mmap()文件内容。