Ho una suite di programmi Java che vengono utilizzati come strumenti da riga di comando sui nostri server Linux. Molti di loro usano una classe che stampa una barra di avanzamento su STDERR, simile a Term::ProgressBar
di Perl.Determinare se STDERR sta per terminale
Mi piacerebbe avere la barra di avanzamento mostrata ogni volta che STDERR sta andando al terminale e si disabilita automaticamente quando STDERR viene reindirizzato in modo che non ci siano tutti i tipi di pezzi della barra di avanzamento nei dati reindirizzati.
Il controllo System.console() == null
era il mio primo pensiero, ma il reindirizzamento di STDOUT è sufficiente per rendere questo true
, anche se STDERR sta ancora andando al terminale. C'è qualcosa che posso controllare che sia specifico per STDERR? Una soluzione specifica per Linux o che utilizza API native sarebbe ok per le mie esigenze.
http://stackoverflow.com/questions/3643939/java-process-with-input-output-stream Godetevi – UberDoyle
@UberDoyle I Non sto chiedendo di avviare un altro processo utilizzando Java. Voglio sapere se lo STDERR del processo * corrente * viene reindirizzato. –