Tôi có một bộ các chương trình Java được sử dụng làm công cụ dòng lệnh trên các máy chủ Linux của chúng tôi. Hầu hết trong số họ sử dụng một lớp mà in một thanh tiến trình trên STDERR, tương tự như của Perl Term::ProgressBar
.Xác định xem STDERR có đang đến terminal
Tôi muốn có thanh tiến trình hiển thị bất cứ khi nào STDERR đi tới thiết bị đầu cuối và tự động vô hiệu hóa khi STDERR được chuyển hướng sao cho không có tất cả các loại thanh tiến trình trong dữ liệu được chuyển hướng.
Kiểm tra System.console() == null
là suy nghĩ đầu tiên của tôi, nhưng chuyển hướng STDOUT là đủ để thực hiện điều này true
, ngay cả khi STDERR vẫn đang đi đến thiết bị đầu cuối. Có bất cứ điều gì tôi có thể kiểm tra đó là cụ thể cho STDERR? Một giải pháp dành riêng cho Linux hoặc sử dụng các API gốc sẽ ổn cho các nhu cầu của tôi.
http://stackoverflow.com/questions/3643939/java-process-with-input-output-stream Thưởng thức – UberDoyle
@UberDoyle tôi không hỏi về việc khởi chạy một tiến trình khác bằng cách sử dụng Java. Tôi muốn biết liệu STDERR của tiến trình * current * đang được chuyển hướng hay chưa. –