Mam program, który pisze do stdout i ewentualnie stderr. Chcę uruchomić go z Pythona, przechwytywanie stdout i stderr. Mój kod wygląda następująco:Jak mogę się dowiedzieć, dlaczego podproces.open wait() czeka na zawsze, jeśli stdout = PIPE?
from subprocess import *
p = Popen(exe, shell=TRUE, stdout=PIPE, stderr=PIPE)
rtrncode = p.wait()
Przez kilka programów, to działa dobrze, ale gdy dodaje nowy, nowy wisi na zawsze. Jeśli usuniemy stdout=PIPE
, program zapisze dane wyjściowe do konsoli i zakończy i wszystko będzie dobrze. Jak mogę ustalić, co powoduje zawieszenie?
Używanie Pythona 2.5 w Windows XP. Program nie czyta ze standardowego wejścia i nie ma żadnego rodzaju danych wejściowych od użytkownika (np. "Uderzenie w klawisz").
Pobiłeś mnie trochę. +1 – MitMaro
Plik pomocy zainstalowany w pythonie 2.5 nie ma zbyt małej ilości informacji. Dzięki –
@Graeme, ah tak, dokumentacja 2.6 znacznie się poprawiła. –