Этот вопрос очень похож на this one. Я хочу читать вывод из консольного приложения. Приложение не завершается, и он не принимает ввода от stdin.Отладка чтения вывода консольного приложения Windows с использованием Python
Когда я изменяю решение rix0rrr для выполнения своего приложения, а затем запускаю его решение, Python зависает, потому что read (1) не возвращается. Первоначальным выходом приложения является «Запуск сервера. \ N». Можете ли вы догадаться, какое свойство может иметь мое приложение, которое мешает его решению работать? Степень моих изменений в том, что я изменил это:
p = Popen(["cmd.exe"], stdin=PIPE, stdout=PIPE)
prompt = re.compile(r"^C:\\.*>", re.M)
к этому:
p = Popen(["c:\\path\\to\\my\\app\\app.exe"], stdin=PIPE, stdout=PIPE)
prompt = re.compile(r"Starting", re.M)
import pdb;pdb.set_trace()
Я также создал тестовую версию своего приложения, которое возвращает немедленно и проверить, что выход из приложения возвращается путем чтения() в этом случае. Его оригинальный, немодифицированный пример, как и ожидалось, также не виснет.
Я также опробовал код ActiveState, с которым связан Петр в своем ответе. В этом случае в процессе не возвращается результат.
Это Python 2.4.4 на Vista.
Вам нужно показать больше кода, в том числе о том, как вы читаете процесс 'STDOUT –