我整天都在寻找一个示例c ++程序,它将使用ready .exe文件作为输出字符串,然后等待标准输入并再次输出输出等等。
例如,我的c ++程序将使用标准输出将“uci”写入.exe程序,.exe程序将再次使用字符串回复,我将能够在我的c ++程序中读取该字符串,我将再次发送一个新字符串并将等待.exe的回复。
我发现了一些关于管道的东西,但我认为它们真的很难理解。我可以使用任何现成的库/界面吗?或者你可以给我一些管道的例子吗?
答案 0 :(得分:2)
如果您只是了解c ++的基础知识,那么您应该遵循这个原则,因为它不需要任何外部库,尽管有人说系统是邪恶的,如果它没有进入生产级程序就可以了
int main()
{
std::string in;
while(std::cin >> in)
{
std::string cmd = std::string("/full/path/to/second.exe <") + in + " >outfile.txt";
system(cmd.c_str());
std::ifstream fin("outfile.txt");
std::cout << fin;
}
}
答案 1 :(得分:1)
如果你打开使用更大的框架,Qt中有一个易于使用的类来处理进程:http://doc.qt.io/qt-5/qprocess.html。
QProcess exe;
exe.start("foo.exe");
exe.write("uci");
exe.waitForReadyRead();
auto result = exe.readAll();
在Windows上,您可以使用CreateProcess / CreatePipe,但代码将更加详细。例: https://msdn.microsoft.com/en-us/library/windows/desktop/ms682499%28v=vs.85%29.aspx