Guida pratica per lavorare in modo robusto con processi esterni in Java: come evitare blocchi dovuti a stream
stdout/
stderr non letti, configurare correttamente le codifiche di output (ad esempio,
UTF-8,
CP866), tenere conto delle differenze cross‑platform dei comandi (
ls vs
dir), gestire i permessi e i codici di uscita tramite
process.exitValue(), chiudere le risorse senza perdite ed evitare deadlock nell’interazione interattiva. Esaminiamo l’uso corretto di
ProcessBuilder, la lettura parallela degli stream (thread/
ExecutorService), la terminazione corretta tramite
process.destroy(), nonché percorsi portabili con
File.separator.