在 UNIX 进程之间交换中等大量数据(数兆字节,但不是千兆字节)的最佳方法是什么?
我认为,这将是内存映射文件,因为大小限制似乎足够容忍。
我需要双向通信,所以普通管道无济于事。据我所知,套接字和 UDP 存在大小限制(另见此处)。不确定,如果 TCP 在fork()
.
阅读诸如此类的相关问题,有人推荐共享内存/mmap,而其他人则推荐套接字。
还有什么我应该研究的吗?例如,是否有一些更高级别的库通过提供数据的 XML 序列化/反序列化来帮助 IPC?
由于评论而编辑:
在我的特殊情况下,有一个父/控制器进程和几个子进程(不能使用线程)。控制器根据请求为孩子提供一些可能适合一个 UDP 包的关键数据。儿童对密钥数据进行操作,并根据密钥向控制器提供信息(信息大小可以为 10-100MB)。
问题:响应数据的大小,在密钥请求时通知父级的机制,同步 - 父级在传递给子级后必须从其列表中删除密钥,不应发生重复的密钥处理。
不得使用 Boost 和其他第三方库(很遗憾)。我也许可以使用 SunOS 5.10 系统提供的库。