3

我需要使用无法修改的旧库处理一些数据。我的问题是它需要一个普通的旧 FILE 句柄才能保存其结果,而且我根本不需要在磁盘上写任何东西。

我知道没有标准的方法可以做到这一点,但是是否有可能使用 Windows API、boost 或其他任何东西来获得一个指向内存的文件句柄?

我没有找到明确保证不(系统地)执行磁盘访问的解决方案。

4

2 回答 2

4

我相信您可以fopen使用管道语法进行管道:

fopen("\\\\.\\pipe\\WritePipe", "w+");

您需要CreateNamedPipe事先使用 , 创建管道,但是一旦完成,您应该能够使用管道来处理数据。

您可能必须创建一个线程来从管道中读取,以确保您的应用程序不会挂起,但它应该可以满足您的需要(无法访问文件系统)

于 2013-01-10T10:56:24.077 回答
1

尝试

fmemopen

如何使用 FILE* 写入内存缓冲区?

特伯特的回答:

对于偶然发现此线程并寻找正确答案的任何其他人:是的,有一种符合标准的方法可以将内存用作文件描述符:fmemopen 或 open_memstream,具体取决于您想要的语义。

http://pubs.opengroup.org/onlinepubs/9699919799/functions/fmemopen.html

http://pubs.opengroup.org/onlinepubs/9699919799/functions/open_memstream.html

于 2013-01-10T11:03:58.090 回答