Tôi muốn khởi chạy một quá trình từ Java, đọc đầu ra của nó và lấy mã trả về của nó. Nhưng trong khi nó thực hiện, tôi muốn có thể hủy bỏ nó. Tôi bắt đầu bằng cách khởi chạy quá trình:Chạy chương trình bên ngoài từ Java, đọc đầu ra, cho phép gián đoạn
ProcessBuilder pb = new ProcessBuilder(args);
pb.redirectErrorStream(true);
Process proc = pb.start();
Nếu tôi gọi proc.waitFor(), tôi không thể làm gì cho đến khi quá trình thoát. Vì vậy, tôi giả sử tôi cần một cái gì đó như thế này:
while (true) {
see if process has exited
capture some output from the process
decide if I want to cancel it, and if so, cancel it
sleep for a while
}
Điều này có đúng không? Ai đó có thể cho tôi một ví dụ về làm thế nào để làm điều này trong Java?
Điều gì xảy ra nếu không có đầu ra trong một thời gian?Sẽ không treo trên br.readLine() cho đến khi có một dòng đã sẵn sàng để đọc? Tôi không chắc có bao nhiêu hoặc ít đầu ra quá trình của tôi sẽ gửi. –
Go point. Bạn có thể tạo một chuỗi phân tách để phân tích nếu quá trình đó phải dừng lại. Nó có thể chạy song song với vòng lặp while và phá hủy quá trình nếu nó treo trong một thời gian (hoặc bất kỳ điều kiện nào khác). –
(i có nghĩa là "điểm tốt") –