Tôi đang viết một chương trình python mà lauches một tiến trình con (sử dụng Popen). Tôi đang đọc tiêu chuẩn của quy trình con, thực hiện một số lọc và viết cho stdout của quy trình chính.giết subprocess khi quá trình python bị giết?
Khi tôi giết quá trình chính (cntl-C), tiến trình con vẫn tiếp tục chạy. Làm cách nào để tôi cũng xóa quy trình con? Các subprocess là likey để chạy một thời gian dài.
Bối cảnh: Tôi chỉ khởi chạy một quy trình con tại một thời điểm, tôi sẽ lọc chế độ phụ. Người dùng có thể quyết định gián đoạn để thử cái gì khác.
Tôi mới dùng python và tôi đang sử dụng các cửa sổ, vì vậy hãy nhẹ nhàng.
Một cảnh báo từ các tài liệu python trên Popen.wait(): Cảnh báo này sẽ bế tắc nếu quá trình con tạo ra đủ sản lượng để một stdout hoặc stderr ống như vậy mà nó chờ đợi khối cho bộ đệm ống hệ điều hành để chấp nhận nhiều dữ liệu hơn. Sử dụng giao tiếp() để tránh điều đó. –
Thực ra 'signal.signal (signal.SIGINT, handlerFunc)' hoạt động tốt trên Python 2.6.5 (r265: 79096, Mar 19 2010, 21:48:26) [MSC v.1500 32 bit (Intel)] trên win32 ; Tôi vừa thử nó. – RobM