从另一个启动一个C++应用程序,并与之通信

Bil*_*ham 1 c c++ matlab system-calls mex

我有一个C++(技术上是MATLAB mex)程序,我打算用它在我的系统上启动一个独立的纯C++ slave程序.主调用程序可能如下所示:

void mexFunction(int nlhs,mxArray *plhs[],int nrhs,const mxArray *prhs[]){
    system ("path/to/slave/program");
}
Run Code Online (Sandbox Code Playgroud)

一旦从站启动,我就会想要第二个mex程序,它将与从程序通信并将数据发送到从程序.发送的数据将采用大型C++数组的形式.

我想我需要对slave程序(可能是它的pid?)进行某种处理,这是一种发送消息的方法,并且可以说是奴隶程序监听传入消息的一种方式.

我没有经验可以让单独的C++程序相互通信,所以在这方面的任何提示都会受到赞赏.此外,如果有任何特定的MATLAB mex特定警告,我很想知道这些.


编辑:我应该提到我正在Ubuntu上构建这个,但最终会喜欢它在所有平台上工作.平台特定的建议非常受欢迎,但多平台的想法真的是我追求的.

kar*_*lip 8

您正在寻找IPC(进程间通信)机制.

Boost有一整章关于此,是一个跨平台的解决方案.

Boost.Interprocess已在以下编译器/平台中进行了测试:

Visual 7.1 Windows XP
Visual 8.0 Windows XP
GCC 4.1.1 MinGW
GCC 3.4.4 Cygwin
Intel 9.1 Windows XP
GCC 4.1.2 Linux
GCC 3.4.3 Solaris 11
GCC 4.0 MacOs 10.4.1
Run Code Online (Sandbox Code Playgroud)