c – 在UNIX进程之间交换适量大量数据的最佳方法是什么?

在UNIX进程之间交换数据中等大量数据(多兆字节,但不是千兆字节)的最佳方法是什么?

我认为,它将是内存映射文件,因为大小限制为seem tolerable enough.

我需要双向通信,所以常见的管道无济于事.据我所知,对于套接字和UDP,存在大小限制(也见here).
不确定,如果TCP在fork()的子进程和父进程之间进行通信是个好主意.

阅读相关问题,如this,有些人推荐共享内存/ mmap,其他人推荐使用套接字.

还有什么我应该研究的吗?例如,是否有一些更高级别的库通过提供例如IPC来帮助IPC. XML序列化/反序列化数据?

由于评论而编辑:

在我的特殊情况下,有一个父/控制器进程和几个子进程(不能使用线程).控制器根据请求为孩子提供一些可能适合一个UDP包的关键数据.儿童根据关键数据进行操作,并根据密钥向控制器提供信息(信息的大小可以是10-100MB).

问题:响应数据的大小,在密钥请求上通知父级的机制,同步 – 父级必须在传递给子级后从其列表中删除密钥,不应发生重复的密钥处理.

不得使用Boost和其他第三方库(不幸的是).我或许可以使用SunOS 5.10系统提供的库.

最佳答案
套接字.在使用锁或其他方式编写或读取内存时,您不必保护内存,以使其并行执行安全.另一个好处是,您可以非常轻松地将代码拆分为两个单独的可执行文件,并使用套接字通信代码在不同的计算机上执行这些可执行文件.

在我看来,主要的缺点是你必须找到一个方案来(去)序列化你的数据并将数据块拆分/组装成几个数据包.

转载注明原文:c – 在UNIX进程之间交换适量大量数据的最佳方法是什么? - 代码日志