两个c / c ++程序的交互

时间:2012-10-27 19:24:27

标签: c++ c messaging

我对此完全缺乏了解。也许这对于堆栈来说太宽泛了,但在这里:

假设我有两个同时运行的程序(用C / C ++编写),比如A和B,运行不同的PID。

有什么选择可以互相交流。例如,我如何将信息从一个传递到另一个,就像让一个人能够等待另一个信号,并做出相应的反应。

我知道MPI,但MPI通常适用于使用相同源编译的程序(因此,它更适用于并行计算,而不仅仅是为完全不同的程序进行交互而构建的相互交互)。

由于

3 个答案:

答案 0 :(得分:5)

您必须注意“IPC”(进程间通信)。有几种类型:

  • 信号
  • 共享内存
  • 消息队列
  • 信号量
  • 文件(根据@JonathanLeffler的建议: - )
  • RPC(由@sftrabbit建议)
    这通常更适合客户端/服务器
    • CORBA
    • d-总线

答案 1 :(得分:2)

您使用众多进程间通信机制之一,例如管道(一个应用程序将字节写入管道,另一个应用程序从中读取。想象一下stdin / stdout。)或共享内存(内存区域映射到两个程序虚拟地址空间,他们可以通过它沟通。)

答案 2 :(得分:0)

相同的来源并不重要 - 一旦您的程序被编译,系统就不知道或不关心它们来自何处。

根据数据量,速度,单向或双向,可预测速率等,有不同的方式进行通信。

最简单的可能只是使用网络 - 请注意,如果您在同一台机器上,网络堆栈将自动使用一些更高性能的系统来实际发送数据(即共享内存)