我必须使用两个通过基于文件的接口(interface)进行通信的 C 程序。也就是说,它们每个都有一个主循环,它轮询三个或四个文件(fopen、fscanf),对其读取的内容使用react,并最终对文件 (fprintf) 进行自己的更改以供其他进程读取。
现在我必须将这两个程序压缩成一个程序,对程序逻辑和一般代码进行最少的更改。然而,主要是出于美学原因,我应该用内存中的东西替换基于文件的通信。
我可以想象一些 hacky 的方法来完成这个,但我相信 stackoverflow 会给我一个漂亮的解决方案的提示 :)
最佳答案
既然你标记了这个 Linux,我将建议 open_memstream
。它是在 POSIX 2008 中添加到 POSIX 中的,但它在基于 glibc 的 Linux 系统上已经可用了很长时间。基本上,它可以让您打开一个 FILE *
,它实际上是内存中一个动态增长的缓冲区,因此您不必更改太多代码。这个"file"是只写的,但您可以简单地使用 sscanf
而不是 fscanf
在缓冲区上读取它,或者使用 fmemopen
(它没有动态增长语义,但对于从内存缓冲区中读取非常方便。
关于c - 摆脱基于文件的通信,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3421378/