Ich habe eine Reihe von Java-Programmen, die als Kommandozeilen-Tools auf unseren Linux-Servern verwendet werden. Die meisten von ihnen verwenden eine Klasse, die eine Fortschrittsleiste auf STDERR druckt, ähnlich wie Perls Term::ProgressBar
.Ermitteln, ob STDERR zum Terminal geht
Ich mag würde der Fortschrittsbalken angezeigt haben, wenn STDERR an das Terminal wird und sich automatisch abschalten, wenn STDERR umgeleitet wird, so dass es nicht alle Arten von Fortschrittsbalken Stücke in den umgeleiteten Daten sind.
Die Überprüfung System.console() == null
war mein erster Gedanke, aber Umleitung STDOUT ist genug, um diese true
zu machen, auch wenn STDERR noch zum Terminal geht. Gibt es etwas, das ich überprüfen kann, das spezifisch für STDERR ist? Eine Lösung, die Linux-spezifisch ist oder native APIs verwendet, wäre für meine Bedürfnisse in Ordnung.
http://stackoverflow.com/questions/3643939/java-process-with-input-output-stream Genießen – UberDoyle
@UberDoyle I Ich möchte nicht einen anderen Prozess mit Java starten. Ich möchte wissen, ob der STDERR des * aktuellen * Prozesses umgeleitet wird. –