Tôi có một chương trình viết để stdout và có thể stderr. Tôi muốn chạy nó từ python, bắt stdout và stderr. Mã của tôi trông giống như:Làm thế nào tôi có thể tìm hiểu lý do tại sao subprocess.Popen wait() chờ đợi mãi mãi nếu stdout = PIPE?
from subprocess import *
p = Popen(exe, shell=TRUE, stdout=PIPE, stderr=PIPE)
rtrncode = p.wait()
Đối với một vài chương trình, điều này làm việc tốt, nhưng khi tôi thêm một chương trình mới, công cụ này sẽ hoạt động mãi mãi. Nếu tôi xóa stdout=PIPE
, chương trình sẽ ghi kết quả đầu ra của nó vào bảng điều khiển và kết thúc và mọi thứ đều ổn. Làm cách nào tôi có thể xác định nguyên nhân gây ra sự cố?
Sử dụng python 2.5 trên Windows XP. Chương trình không đọc từ stdin cũng như không có bất kỳ loại đầu vào nào của người dùng (tức là "nhấn phím").
Bạn đã đánh bại tôi một chút. +1 – MitMaro
Tệp trợ giúp được cài đặt với python 2.5 không có chút thông tin nhỏ. Cảm ơn –
@Graeme, ah có, tài liệu của 2.6 được cải thiện đáng kể 2,5 wrt. –