我有一个库,它消耗 aFILE *
并将数据输出到另一个FILE *
.
我想在内存中处理这个库的输入和这个库的输出,而不需要从磁盘上的文件读取/写入文件。
我们在 iOS 中这样做 - 因此将库作为单独的应用程序运行并使用stdin
/stdout
不是(据我所知)一个可行的选择。
我有一个库,它消耗 aFILE *
并将数据输出到另一个FILE *
.
我想在内存中处理这个库的输入和这个库的输出,而不需要从磁盘上的文件读取/写入文件。
我们在 iOS 中这样做 - 因此将库作为单独的应用程序运行并使用stdin
/stdout
不是(据我所知)一个可行的选择。
因为 ObjC 是 C 的超集,所以您所要做的就是#import/#include <stdio.h>
访问funopen()
它本身包含函数readfn
、writefn
、seekfn
和closefn
。fwopen 有一个示例,显示如何在另一个SO question中写入两个流。
Mac OSX 和 iOS 不包含fmemopen
,open_memstream
因为它们显然是不可移植的linux 功能
从 macos 10.13、ios 11.0、tvos 11.0 和 watchos 4.0 开始,fmemopen
stdioopen_memstream
中提供了一些其他有用的 POSIX.1-2008 标准函数。
看看https://github.com/shyuep/pyhull/tree/master/src/fmemopen,我自己在 Mac OSX 10.8.2 上测试过,它工作正常。
作者表示它也应该适用于 iOS。