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

send and receive data between 2 application in c++

本文关键字:数据 之间 中在 C++ 应用程序      更新时间:2023-10-16

我想编写两个 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操作系统。

有许多可能的方法可以在进程之间进行通信,哪种方式最好取决于很多因素。 使用环境基本上只适合单向通信,而不是双向通信。 可用的方法包括:

  • 环境变量(单向(
  • 命令行参数(单向(
  • 管道
  • 文件
  • 插座
  • 先进先出
  • 共享内存
  • 消息队列
  • 信号
  • 信号灯

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

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