将数据发送到另一个进程的简单方法(成功)?

时间:2019-05-02 12:37:09

标签: c++ windows powershell ipc c++17

假设您正在为Windows平台开发两个应用程序(A和B)。

平台/系统为Windows(如果重要的话,则为Windows 10)

如果只允许您在c ++语言级别(即:包括标准库和STL)工作,如何从A向B发送一些信息?这排除了任何第三方库。

我试图避免使用系统API,因为它通常涉及大量的类似于c的编程(因此不适合我的目的)。

在这种特定情况下,两个进程都连续运行,并且由于某些外部事件(如果重要)而发生发送-因此可能需要某种同步。

正在考虑的可能解决方案:

  1. 使用通过std::ofstreamstd::ifstream的文件可能是一种解决方案(尽管是粗略的解决方案)? -但是如何才能实现同步?

  2. 即使将STDOUT重定向到STDIN也可以-尤其是如果有一些简单的方法来设置它(例如,在命令行上启动一个命令行-如果需要,可能)

1 个答案:

答案 0 :(得分:1)

一种涉及通过数据文件传输的解决方案(它使用std::filesystem::rename作为同步方式,或者您可以说避免使用它):

a.exe(编写器)

#include <filesystem>

auto tmpfile = std::filesystem::temp_directory_path() / "some_uuid.txt";
auto datafile = std::filesystem::temp_directory_path() / "data.txt";
std::ofstream(tmpfile) << "hello" << std::endl;

std::filesystem::rename(tmpfile, datafile);

b.exe(阅读器)

auto datafile = std::filesystem::temp_directory_path() / "data.txt";
while (!std::filesystem::exists(datafile)) {
  ;//we have nothing else to do ?
}
std::ifstream input(data);
//read input etc.