从.exe读取输入,并写入.EXE,以阅读国际象棋引擎命令

Reading input from .exe and writing to a .exe for reading Chess engine commands

本文关键字:国际象棋 命令 引擎 EXE 读取 exe 输入      更新时间:2023-10-16

我整天都在搜索一个示例C 程序,该程序将使用Ready .exe文件,该文件具有输出字符串,然后等待Standart Input,然后再次打印输出等等。

例如,我的C 程序将使用标准输出将" UCI"写入.EXE程序,.EXE程序将再次使用字符串回复,我将能够在我的C 程序中阅读,并且我再次发送一个新字符串,并将等待.exe。

我找到了有关管道的东西,但我认为它们真的很难理解。我可以使用任何准备好的库/界面吗?或您可以给我提供管道的任何例子?

如果您只知道C 的基础知识,则应该遵循它,因为它不需要任何外部lib级别程序

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;
   }   
}

如果您开放使用更大的框架,则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/mms682499(v=vs.85).85).aspx