nugawiki

./categories/back-end

Java ProcessBuilder·Runtime.exec

업데이트 2026-07-21 조회수

ProcessBuilder (권장)

인자 배열로 넘겨 셸 인젝션 위험 감소.

ProcessBuilder pb = new ProcessBuilder("ls", "-al");  // Linux/Mac
// Windows: new ProcessBuilder("cmd", "/c", "dir");
pb.redirectErrorStream(true);
Process process = pb.start();

try (BufferedReader reader = new BufferedReader(
        new InputStreamReader(process.getInputStream()))) {
    String line;
    while ((line = reader.readLine()) != null) {
        System.out.println(line);
    }
}
int code = process.waitFor();  // 0 = 정상

Runtime.exec (구방식)

Process process = Runtime.getRuntime().exec(new String[]{"cmd", "/c", "dir"});

주의

표준출력·에러를 읽지 않으면 버퍼가 차 프로세스가 멈출 수 있음 → redirectErrorStream(true) 후 함께 읽기.

./comments