2012-10-27 42 views
4

我在这方面完全不了解。也许这是栈过于宽泛,但这里有云:两个c/C++程序的交互

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

是什么使然后彼此互动的方式。例如,我如何将信息从一个传递到另一个,就像有一个人能够等待另一个人的信号并作出相应的响应。

我知道MPI,但通常MPI适用于那些使用相同的源(所以,它的作品多为并行计算比建互相交流完全不同的方案只是交互)编译的程序。

由于

+3

它是高度依赖你的平台(如Windows,Linux的等)尝试使用Google的IPC上(国米过程交流)。 – john

+0

对于Linux:我喜欢http://beej.us/guide/bgipc/。 –

回答

5

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

  • 信号
  • 共享存储器
  • 消息队列
  • 信号灯
  • 文件(每@JonathanLeffler的建议:-)
  • RPC(通过建议的@sftrabbit)
    通常是更倾向于客户/服务器面向
    • CORBA
    • d-Bus的
+0

不要忘记老式的文件;它是一个卓越的IPC机制,不仅仅是因为它可以用于在不同时运行的进程之间进行通信。 –

+0

值得一提的是一些更高级别的API /库(例如D-Bus,XML/JSON-RPC,CORBA等) –

2

可以使用许多进程间通信机制之一,像管(一个应用程序写入字节到一个管道,另一从中读取。想象标准输入/输出)或共享存储器(存储器的一个区域被映射到两个程序虚拟地址空间中,并且它们可以通过它进行通信)。

0

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

有这取决于有多少数据,如何快速,单向或双向的,可预测,速度等等等等在它们之间通信不同的方式....

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