4

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

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

有哪些选项可以进行然后相互交互。例如,我如何将信息从一个传递到另一个,例如让一个能够等待另一个信号,并做出相应的响应。

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

谢谢

4

3 回答 3

5

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

  • 管道
  • 信号
  • 共享内存
  • 消息队列
  • 信号量
  • 文件(根据@JonathanLeffler 的建议 :-)
  • RPC(由@sftrabbit 建议)
    通常更适合客户端/服务器
    • 科尔巴
    • D-总线
于 2012-10-27T19:31:02.650 回答
2

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

于 2012-10-27T19:29:16.530 回答
0

相同的来源无关紧要——一旦你的程序被编译,系统就不会知道或关心它们来自哪里。

它们之间有不同的通信方式,具体取决于数据量、速度、单向或双向、可预测的速率等......

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

于 2012-10-27T19:32:56.677 回答