Java에서 외부 프로세스를 안정적으로 다루기 위한 실용 가이드: 읽히지 않은 출력 스트림
stdout/
stderr 때문에 발생하는 멈춤을 피하고, 출력 인코딩(예:
UTF-8,
CP866)을 올바르게 설정하며, 명령의 크로스 플랫폼 차이(
ls vs
dir)를 고려하고,
process.exitValue()로 권한과 종료 코드를 처리하고, 리소스를 누수 없이 닫으며 대화형 상호작용의 상호 교착을 피하는 방법을 다룹니다. 또한
ProcessBuilder의 올바른 사용, 스트림 병렬 읽기(스레드/
ExecutorService),
process.destroy()를 통한 올바른 종료,
File.separator로 플랫폼 독립 경로를 사용하는 방법을 설명합니다.