Ein praxisnaher Leitfaden für robuste Arbeit mit externen Prozessen in Java: wie man Hänger durch nicht gelesene Streams
stdout/
stderr vermeidet, die Ausgabe-Kodierung korrekt konfiguriert (z. B.
UTF-8,
CP866), plattformübergreifende Unterschiede von Befehlen berücksichtigt (
ls vs
dir), Berechtigungen und Exit-Codes über
process.exitValue() behandelt, Ressourcen ohne Lecks schließt und interaktive gegenseitige Blockaden vermeidet. Wir betrachten den sachgemäßen Einsatz von
ProcessBuilder, das parallele Lesen der Streams (Threads/
ExecutorService), das korrekte Beenden via
process.destroy() sowie systemunabhängige Pfade mit
File.separator.