此問題與this one非常相似。我想讀取我的控制檯應用程序的輸出。該應用程序不會終止,也不需要從stdin輸入。使用Python調試Windows控制檯應用程序的輸出讀數
當我修改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()
我也創建了我的應用程序,立即返回的測試版本,並驗證返回從應用程序的輸出通過閱讀()在這種情況下。正如預期的那樣,他的原始未經修改的例子也不會被掛起。
我還試用了Piotr在他的答案中鏈接到的ActiveState代碼。在這種情況下,也不會有輸出返回。
這是Vista上的Python 2.4.4。
您需要展示更多代碼,包括您如何閱讀流程'STDOUT – 2009-11-06 06:08:35