我想在我的程序中传递输入变量的值,让#1说到另一个程序#2,我希望#2打印它到屏幕的数据,两者都需要用c ++编写。这将在Linux上。
答案 0 :(得分:7)
根据平台的不同,有许多选项可供选择。您要做的通常称为进程间通信(IPC)。
一些选项包括:
最简单的可能取决于您正在使用的平台。
答案 1 :(得分:6)
与往常一样,有一个Boost library(上帝,我喜欢Boost)。
答案 2 :(得分:4)
Nic已经涵盖了我想要提及的所有4个(在同一台机器上):
如果编写系统调用对您来说很麻烦,您可能需要使用以下库:
答案 3 :(得分:2)
如果效率不是主要问题,请使用普通文件i / o 。
否则请去IPC。
就 Windows 而言,您有以下选择:
剪贴板, COM, 数据复制, DDE, 文件映射, Mailslots, 管道, RPC, Windows套接字
对于 Linux ,请使用名称管道(高效)或套接字。
答案 4 :(得分:1)
如果您使用的是Windows,则可以使用Microsoft消息队列。这是前面提到的队列的一个例子。
答案 5 :(得分:1)
如果要传递的数据只是一个变量,那么其中一个选项是通过程序#1将其设置为环境变量[Var1]并在程序#2中访问它[如果它们都在相同的环境中运行/机器]。通过使用IPC / socket等,猜测这将是最简单的,而不是使其变得复杂。
答案 6 :(得分:1)
我认为大多数答案都涉及常见的IPC机制。我想补充一点,我可能会选择套接字,因为它在几个平台上相当标准。当我需要实现适用于Symbian Series 60和Windows Mobile的IPC时,我决定采用这种方式。
范例很简单,除了一些平台故障外,该模型对两个平台的工作方式都相同。我还建议使用Protocol Buffers格式化您发送的数据。谷歌在其基础设施中使用了很多。 http://code.google.com/p/protobuf/
答案 7 :(得分:1)
答案 8 :(得分:0)
回应你对Roopesh Majeti的回答的评论,这是一个使用环境变量的简单例子:
第一个程序:
// p1.cpp - set the variable
#include <cstdlib>
using namespace std;;
int main() {
_putenv( "MYVAR=foobar" );
system( "p2.exe" );
}
第二个程序:
// p2.cpp - read the variable
#include <cstdlib>
#include <iostream>
using namespace std;;
int main() {
char * p = getenv( "MYVAR" );
if ( p == 0 ) {
cout << "Not set" << endl;
}
else {
cout << "Value: " << p << endl;
}
}
注意: