将内存地址作为c中的文件传递

时间:2014-03-11 00:49:45

标签: c

如果我有某种类似于void foo(FILE* fp)的函数的库,并且我有一个char*数据数组,那么我有没有办法将指针传递给数组或其他什么东西类似于foo函数?。

我现在正在做的是使用system()写入临时文件,我真的不喜欢这样做。

2 个答案:

答案 0 :(得分:3)

不,stdio库无法定义您自己的缓冲方案。

给定POSIX和虚拟内存,您可以使用mmap打开带有后备文件的内存区域。操作系统可能选择不将文件写入磁盘。详细信息因操作系统而异,但这可以达到理想的解决方案。

或者,正如Barmar建议的那样,使用pipe将数据从进程中的辅助线程发送到主线程。

至于简单的解决方案......为什么在使用system()mktemp()fopen()时使用fwrite()

答案 1 :(得分:1)

我想你想要fmemopen。假设你在Linux上运行(或者其他一些posixy;如果你需要Windows支持,则需要检查),它应该是可用的。