【问题标题】:Data sending between master process and slaves主进程和从进程之间的数据发送
【发布时间】:2015-08-29 13:59:00
【问题描述】:

我需要将大量(日志)数据从多个进程发送到一个主进程。它们都在系统上独立运行。

最好的方法是什么?进程间通信是实现此目的的好方法还是应该使用共享内存?也许还有一种我还不知道的不同方式。

在 Linux 上使用的语言是 C,因为我必须在现有程序中实现它。

你将如何实现它?

【问题讨论】:

    标签: c ipc shared-memory


    【解决方案1】:

    除了使用管道/命名管道进行进程间通信See this SO question 和共享内存See this SO questionSo question 用于最快和大尺寸数据的讨论。(它指导使用共享内存(快速和大)和管道(简单)。

    您可以尝试使用套接字。 master 监听一个端口,所有 slave 连接到该端口,master 接受连接。但这可能会导致打包和资源开销。

    【讨论】:

      【解决方案2】:

      如果它是单向的,那么我建议您使用管道;简单直接。

      如果它是双向的,那么我建议您进行套接字编程,而不是进行其他进程间通信;原因是“你最终会编写锁定机制”;有了 socket,你就不需要处理这些了,而且在你的生活中,在编码方面会更容易。

      【讨论】:

      • 对于双向,你不能轻松地使用两个管道吗?
      • 我们当然可以使用,但我不推荐这里,因为@Merl 指定将有多个进程向主控发送数据,所以如果我们有超过 10 个进程,那么我们将有 20 个管道及其制造商在编写代码和调试方面也很复杂。
      猜你喜欢
      • 2011-01-27
      • 1970-01-01
      • 1970-01-01
      • 2016-10-13
      • 1970-01-01
      • 1970-01-01
      • 2018-10-05
      • 2021-10-15
      • 2020-01-06
      相关资源
      最近更新 更多