Я пытаюсь управлять дочерним процессом через модуль подпроцесса.
Я пытаюсь читать с программного обеспечения сервера Minecraft, используя его стандартный вывод. Однако, когда я пишу в stdin, он проходит, но когда я читаю из stdout, впоследствии он блокируется.
import subprocess as sp
proc = sp.Popen([r"C:\Users\jbloo\Documents\VSCode\Python\bedrock-server-1.12.1.1\bedrock_server.exe"],
stdout=sp.PIPE, stderr=sp.STDOUT, stdin=sp.PIPE, universal_newlines=True)
with proc:
while True:
# print("Trying to communicate")
output = proc.stdout.readline().strip()
print(output)
if "Server started." in output:
break
while True:
command = input("Command: ", ) + "\n"
# command = bytes(command, "utf-8")
proc.stdin.write(command)
print("Wrote")
print(proc.stdout.readline())
Я пробовал многие другие решения, но, похоже, не могу его получить.
это конец терминала.
[2019-10-17 01:22:04 INFO] IPv4 supported, port: 19132
[2019-10-17 01:22:04 INFO] IPv6 supported, port: 19133
[2019-10-17 01:22:05 INFO] IPv4 supported, port: 54072
[2019-10-17 01:22:05 INFO] IPv6 supported, port: 54073
[2019-10-17 01:22:05 INFO] Server started.
Command: sdf
Wrote
STDOUT не читается. Он просто заблокирован!