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

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

概述在UNIX进程之间交换数据中等大量数据(多兆字节,但不是千兆字节)的最佳方法是什么? 我认为,它将是内存映射文件,因为大小限制为seem tolerable enough. 我需要双向通信,所以常见的管道无济于事.据我所知,对于套接字和UDP,存在大小限制(也见here). 不确定,如果TCP在fork()的子进程和父进程之间进行通信是个好主意. 阅读相关问题,如this,有些人推荐共享内存/ m 在UNIX进程之间交换数据中等大量数据(多兆字节,但不是千兆字节)的最佳方法是什么?

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

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

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

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

由于评论而编辑:

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

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

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

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

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

总结

以上是内存溢出为你收集整理的c – 在UNIX进程之间交换适量大量数据的最佳方法是什么?全部内容,希望文章能够帮你解决c – 在UNIX进程之间交换适量大量数据的最佳方法是什么?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1215224.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-05
下一篇 2022-06-05

发表评论

登录后才能评论

评论列表(0条)

保存