Ich versuche Zeilen vom tcp Server zu lesen, die ich im selben Skript ausgeführt habe. Ich bin in der Lage, einen Befehl zu senden und liest seine Ausgabe, aber am Ende (nach dem Lesen aller Ausgänge) sieht es aus wie das Programm in Readline hängt, habe ich fast alle Lösungen here und here versucht, aber immer noch es hängt.Python Subprozess readline hängt() nach dem Lesen aller Eingaben
Die meisten dieser Lösungen schlagen vor, zu prüfen, ob die Ausgabe von readline keine oder nicht ist, aber in meinem Fall kehrt das Programm nie vom letzten Lesevorgang zurück und bleibt einfach dort hängen.
Bearbeiten: Tcp-Server ist nicht in meiner Kontrolle, oder sagen, ich muss nur Server-Skript testen, daher kann ich es nicht ändern. Ist es auch möglich, Befehle mit Python an running server zu senden, ohne den Subprozess zu benutzen? eine bessere Alternative?
def subprocess_cmd(command):
process=subprocess.Popen(command,stdin=subprocess.PIPE,stderr=subprocess.STDOUT,stdout=subprocess.PIPE, shell=True)
for cmd in ['python3 -u tcp_server.py 123 port1']:
subprocess_cmd(cmd)
process.stdin.write('command like print_list')
process.stdin.flush()
while True:
line=process.stdout.readline()
if line == '':
break
Sie müssten Ihren Code veröffentlichen, damit wir Ihnen helfen können. –
@ Jean-FrançoisFabre Code wurde hinzugefügt –