Wenn man "gnuchess" im "engine-mode" (minimale Ausgabe nach xterm protokoll) startet, kann man nicht auf den stdout-Stream zugreifen.
Der Aufruf in der Konsole gibt beim Ausführen von "gnuchess -x" 2 Zeilen aus, theoretisch müsste das Lesen funktionieren. Allerdings bleibt der Interpreter beim Aufruf der "read()"-Methode stehen.
Beim Auslassen des Arguments "-x" funktioniert alles wie es sollte...
Testweise ließ ich stdout in eine Datei schreiben. An oberster Stelle standen die besagten 2 Zeilen, dannach folgten Massen von der gnuchess-spezifischen Fehlermeldung "Illegal Move". Damit diese aber ausgegeben wird müsste voher eine Eingabe erfolgen...
Hier der Code:
Code: Alles auswählen
import subprocess
cmd="gnuchess"
args="-x"
process = subprocess.Popen([cmd,args], stdin=subprocess.PIPE, stdout=subprocess.PIPE, stderr=subprocess.PIPE, bufsize=0)
pout = process.stdout
pin = process.stdin
pout.read(1) #hier bleibt es stehen
Ich bin für jeden Hinweis dankbar!