c++ - 在 C++ 中的 2 个应用程序之间发送和接收数据

标签 c++ return-value

我想编写两个 C++ 应用程序,第一个称为“调用者”,第二个称为“处理器”。

调用者应用程序向处理器发送一个值。在该处理器对该值进行一些处理并将其返回给调用者之后。

我想知道最好的方法。

到目前为止,我知道如何将值从调用者应用程序发送到处理器应用程序,但我找不到任何方法来返回值。其中一种方法是使用 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 操作系统。

最佳答案

进程间通信的方式有很多种,哪种方式最好取决于很多因素。使用环境基本上只对单向通信有利,对双向通信不利。可用的方法包括:

  • 环境变量(单向)
  • 命令行参数(一种方式)
  • 管道
  • 文件
  • socket
  • 先进先出
  • 共享内存
  • 消息队列
  • 信号
  • 信号量

有些仅限于由共同祖先连接的进程;其他人可以在不相关的进程之间工作,有时甚至不在同一台机器上。一些机制可以传送非常少的数据(例如信号);其他人可以传达大量数据。有些不需要同步;其他则需要广泛的同步。

哪个最适合你?我们没有足够的信息来猜测。但是,您的最佳选择很可能是在管道、文件和套接字之间进行。

关于c++ - 在 C++ 中的 2 个应用程序之间发送和接收数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10368121/

相关文章:

c++ - boost::thread 是线程安全的吗?

c++ - 算法:非铰接顶点

vim - 如何捕获vim中函数的返回值?

c++ - 在调用非 void 函数而不使用其值时是否会复制它?

c++ - 在多线程上下文中实现实时约束

c++ - 从对象列表中获取具有特定成员值的所有对象

c - 警告 : ‘return’ with a value, 在返回 void return next 的函数中; ex19.c:95:10: 错误:void 值没有被忽略,因为它应该被忽略

PHP函数没有返回值

c++ - 从命名空间调用方法 - 声明标识符

c++ - g++如何在忽略函数返回值时获得警告