我想写两个c ++应用程序,第一个叫做“caller”,第二个称为“处理器”。
调用者应用程序向处理器发送值。在该处理器对该值进行一些处理并将其返回给调用者之后。
我想知道最好的方法。
到目前为止,我知道如何从调用者应用程序向处理器应用程序发送值,但我找不到任何方法将值返回。其中一种方法是使用putenv()和getenv()
来电示例
#include <iostream>
#include <stdlib.h>
using namespace std;
int main(int argc, char **argv, char** envp){
char myvar[]="MYVAR= say something";
putenv(myvar);
cout<<getenv("MYVAR")<<endl;
system("./processor");
cout<<getenv("MYVAR")<<endl;
}
处理器示例
#include <iostream>
#include <stdlib.h>
using namespace std;
int main(int argc, char **argv, char** envp){
char myvar[]="MYVAR= say something else";
putenv(myvar);
cout<<getenv("MYVAR")<<endl;
}
如何解决这个问题,将值从处理器返回给调用者,如果有更好的方法是什么呢。我正在使用Ubunut OS。
答案 0 :(得分:2)
有许多可能的方法在流程之间进行通信,哪种方式最好取决于很多因素。使用环境基本上只对单向通信有利,而不是双向通信。可用的方法包括:
有些仅限于由共同祖先连接的过程;其他人可以在不相关的进程之间工作,有时甚至不在同一台机器上。一些机制可以传递非常少的数据(例如信号);其他人可以传达大量数据。有些不需要同步;其他需要广泛同步。
哪种方式最适合你?我们没有足够的信息来猜测。但是,您最好的选择很可能是在管道,文件和套接字之间。