在 C++ 中在 2 个应用程序之间发送和接收数据
send and receive data between 2 application in c++
我想编写两个 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操作系统。
有许多可能的方法可以在进程之间进行通信,哪种方式最好取决于很多因素。 使用环境基本上只适合单向通信,而不是双向通信。 可用的方法包括:
- 环境变量(单向(
- 命令行参数(单向(
- 管道
- 文件
- 插座
- 先进先出
- 共享内存
- 消息队列
- 信号
- 信号灯
有些仅限于由共同祖先连接的进程;其他进程可以在不相关的进程之间工作,有时甚至不在同一台机器上。 一些机制可以传达很少的数据(例如信号(;其他人可以传达大量数据。 有些不需要同步;其他需要广泛的同步。
哪个最适合您? 我们没有足够的信息来猜测。 但是,您最好的选择很可能是在管道、文件和套接字之间。
相关文章:
- 在cuda线程之间共享大量常量数据
- 在c代码之间共享数据的最佳方式
- C++LinkedList问题.数据类型之间存在冲突?没有匹配的构造函数
- PC中的程序和PHONE中的本机描述应用程序之间的数据连接
- 如何使用发送数据包所花费的时间计算两个节点之间的距离?
- 线程之间的实时数据共享
- std::weak_ptr 和相应的 std::shared_ptr 之间是否存在数据竞争?
- 在C++事务之间存储大量字符数据的有效方法
- 如何在进程之间共享大量数据而不重复?(国际刑罚委员会)
- 简单使用 std::atomic 在两个线程之间共享数据
- 在 EXE/DLL 之间传递数据
- 由 std::shared_ptr 向量指向的数据之间的线程同步
- 在压缩和未压缩数据之间切换
- 尝试从每个预期数据之间有多个空间的文件中读取和存储数据
- 如何在指定数据之间将数据从一个向量获取到另一个向量
- 使用Isringstream和struct/vector在给定的数据之间建立连接
- 结构数据D = {0}和结构数据D = {}之间是否存在任何区别
- openMP 的目标数据和目标数据之间的区别?
- 代码是否被视为可移植可执行文件格式中的初始化数据,初始化数据和单元化数据之间的确切区别是什么
- libpcap 数据包结果与使用 C++ 的 BSD 套接字接收数据之间的差异