我正在尝试在 Linux 中编写一个 C++ 程序,该程序通过其命令行界面与国际象棋引擎进行通信。国际象棋引擎有像UCI这样的标准协议,所以如果我能写这个,我可以互换使用不同的国际象棋引擎。
我的 C++ 程序应该启动国际象棋引擎,向其发送命令,获取输出,向其发送命令,获取输出等……这是如何完成的?
我正在尝试在 Linux 中编写一个 C++ 程序,该程序通过其命令行界面与国际象棋引擎进行通信。国际象棋引擎有像UCI这样的标准协议,所以如果我能写这个,我可以互换使用不同的国际象棋引擎。
我的 C++ 程序应该启动国际象棋引擎,向其发送命令,获取输出,向其发送命令,获取输出等……这是如何完成的?
您需要从标准输入和标准输出设置一些管道。默认情况下,程序的标准输出写入终端,标准输入从终端读取。本质上,您要做的是将这些从终端重新路由到您的程序。
您可以分叉,设置管道,然后从您的子进程中使用 execve() 启动国际象棋。该站点有一个简单的示例,说明如何将标准从主程序输出到子进程的标准输入:
http://www.cim.mcgill.ca/~franco/OpSys-304-427/messages/node92.html