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