Описание:
Я пытался создать оболочку, которая может быть интерактивной в программном обеспечении для чата, поэтому мне нужен cmd.exe
в качестве подпроцесса и передача строк в процесс.
У меня есть это:
from subprocess import Popen
from subprocess import PIPE as p
proc = Popen("cmd",stdout=p,stdin=p,shell=True)
, поэтому обычно мы делаем, если нам нужно передать входные данные процессу, используя proc.stdin.write()
, но кажется, что строка будет передаваться и работать только после python сценарий завершен
например, у меня есть
#same thing above
proc.stdin.write("ping 127.0.0.1".encode())
time.sleep(10)
сценарий будет ждать 10 се c, затем пройдет и запустит команду ping
. это означает, что невозможно получить результат stdout.read()
, потому что ничего нет.
Я пытался использовать subprocess.Popen.communicate()
, но он закрывает канал после одного ввода.
Есть ли способ решить вопрос "только запустить команду после скрипта fini sh" или заставить communicate()
не закрывать канал?