У меня есть набор Java-программ, которые используются в качестве инструментов командной строки на наших серверах Linux. Большинство из них используют класс, который печатает индикатор выполнения на STDERR, аналогичный Term::ProgressBar
от Perl.Определение того, собирается ли STDERR на терминал
Я бы хотел, чтобы индикатор выполнения показывался всякий раз, когда STDERR отправляется на терминал и автоматически отключается, когда STDERR перенаправляется, так что в перенаправленных данных не все виды индикаторов выполнения.
Проверка System.console() == null
была моей первой мыслью, но перенаправление STDOUT достаточно, чтобы сделать это true
, даже если STDERR все еще идет к терминалу. Есть ли что-нибудь, что я могу проверить, что характерно для STDERR? Решение, специфичное для Linux, или использующее собственные API, было бы в порядке для моих нужд.
http://stackoverflow.com/questions/3643939/java-process-with-input-output-stream Наслаждайтесь – UberDoyle
@UberDoyle I «Не спрашивайте о запуске другого процесса с использованием Java. Я хочу знать, перенаправляется ли STDERR * текущего * процесса. –