假设您正在为Windows平台开发两个应用程序(A和B)。
平台/系统为Windows(如果重要的话,则为Windows 10)
如果只允许您在c ++语言级别(即:包括标准库和STL)工作,如何从A向B发送一些信息?这排除了任何第三方库。
我试图避免使用系统API,因为它通常涉及大量的类似于c的编程(因此不适合我的目的)。
在这种特定情况下,两个进程都连续运行,并且由于某些外部事件(如果重要)而发生发送-因此可能需要某种同步。
正在考虑的可能解决方案:
使用通过std::ofstream
和std::ifstream
的文件可能是一种解决方案(尽管是粗略的解决方案)? -但是如何才能实现同步?
即使将STDOUT重定向到STDIN也可以-尤其是如果有一些简单的方法来设置它(例如,在命令行上启动一个命令行-如果需要,powershell可能)
答案 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.