我有一个void *buffer
,它是RAM中文件的一个实例。
文件类型的格式必须由给定的API解析。
不幸的是,通过API打开此文件类型的唯一方法是为API提供文件路径:
sample_api_open(char *file_name, ...);
我理解shm_open
返回文件描述符,但API只接受文件路径。
是否有解决方法在内存中读取此类文件?
答案 0 :(得分:0)
您可以打开一个临时文件mmap()
而不是使用POSIX共享内存。然后让缓冲区在mmap()
- ed区域结束,这样你就可以在临时文件上调用API了。
答案 1 :(得分:0)
是否有解决方法在内存中读取此类文件?
将缓冲区的内容转储到/tmp
上的临时文件中。
在绝大多数现代* NIX系统中,/tmp
是一个合成的内存文件系统。仅在内存不足的情况下,内容可能会因交换而到达磁盘。
如果信息量太大,为避免重复,在将内容转储到/tmp
后,您可以释放本地内存和mmap()
文件内容。