Windows 7 では、コマンド ライン経由でチェス エンジンと通信できます。Win 7でStockfishを使用した小さなサンプル セッション:
C:\run\Stockfish>stockfish-x64.exe
Stockfish 2.2.2 JA SSE42 by Tord Romstad, Marco Costalba and Joona Kiiski
quit
C:\run\Stockfish>
最初の行はエンジンによって出力され、「quit」はエンジンを終了するために入力したものです (他にもできることがありますが、それは私には明らかです)。
今、私はPythonからそのエンジンと通信したい:
import subprocess
engine = subprocess.Popen(
'stockfish-x64.exe',
stdin=subprocess.PIPE,
stdout=subprocess.PIPE,
)
for line in engine.stdout:
print(line.strip())
engine.stdin.write('quit\n')
そして私は得る
C:\run\Stockfish>communicate.py
b'Stockfish 2.2.2 JA SSE42 by Tord Romstad, Marco Costalba and Joona Kiiski'
しかし、エンジンを終了せず (C:\run\Stockfish>
プロンプトなし)、入力を待ち続けます。窓を手で閉めなければなりません。終了メッセージ (python スクリプトの最後の行) が stdin に書き込まれないようです。
つまり、stdout から読み取ることはできますが、stdin に書き込んでも何も起こりません。
私は何を間違っていますか、そしてそれを正しく行うにはどうすればよいですか?