我需要使用无法修改的遗留库处理一些数据。我的问题是,它需要一个普通的旧FILE句柄来保存它的结果,而且我根本不需要在磁盘上写任何东西。
我知道没有标准的方法来做到这一点,但是否有可能使用windows API, boost或其他任何东西,以获得一个文件句柄指向内存?
我找不到一个明确保证不(系统地)执行磁盘访问的解决方案。
我相信你可以fopen
a管道,使用管道语法:
fopen("\\.\pipe\WritePipe", "w+");
您需要事先使用CreateNamedPipe
创建管道,但是一旦您完成了这一点,您应该能够使用管道来处理数据。
你可能需要创建一个线程来从管道中读取,以确保你的应用程序不会挂起,但它应该可以满足你的需要(不能触摸文件系统)
Try with
fmemopen
从如何写一个文件到内存缓冲区*?
tbert的回答是:
对于任何其他谁偶然发现这个线程寻找正确的答案:是的,有一种符合标准的方法来使用内存作为文件描述符:fmemopen或open_memstream,取决于你想要的语义
http://pubs.opengroup.org/onlinepubs/9699919799/functions/fmemopen.html http://pubs.opengroup.org/onlinepubs/9699919799/functions/open_memstream.html