获取一个FILE *句柄而不实际在磁盘上创建一个文件



我需要使用无法修改的遗留库处理一些数据。我的问题是,它需要一个普通的旧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

相关内容

  • 没有找到相关文章

最新更新