コマンド ライン インターフェイスを介してチェス エンジンと通信する C++ プログラムを Linux で作成しようとしています。チェス エンジンにはUCIなどの標準プロトコルがあるため、これを記述できれば、さまざまなチェス エンジンを交換可能に使用できます。
私の C++ プログラムは、チェス エンジンを起動し、コマンドを送信し、出力を取得し、コマンドを送信し、出力を取得する必要があります。これはどのように行われますか?
コマンド ライン インターフェイスを介してチェス エンジンと通信する C++ プログラムを Linux で作成しようとしています。チェス エンジンにはUCIなどの標準プロトコルがあるため、これを記述できれば、さまざまなチェス エンジンを交換可能に使用できます。
私の C++ プログラムは、チェス エンジンを起動し、コマンドを送信し、出力を取得し、コマンドを送信し、出力を取得する必要があります。これはどのように行われますか?
標準インと標準アウトからいくつかのパイプをセットアップする必要があります。デフォルトでは、プログラムからの標準出力は端末に書き込まれ、標準入力は端末から読み取られます。基本的に、これらを端末からプログラムに再ルーティングします。
フォークしてパイプをセットアップし、子プロセスから execve() を使用してチェスを起動できます。このサイトには、メイン プログラムから標準アウトを子プロセスの標準インにパイプする方法の簡単な例があります。
http://www.cim.mcgill.ca/~franco/OpSys-304-427/messages/node92.html