반응형

Process p;
String osName = System.getProperty("os.name");
InputStream stdout = null;
InputStream stderr = null;

String[] cmd;
if(osName.toLowerCase().startsWith("window")) {
    cmd = new String[] { "cmd.exe", "/y", "/c", command };
} else {
    cmd = new String[] { "/bin/sh", "-c", command };
}

p = Runtime.getRuntime().exec(cmd);
p.waitFor(); // wait for process finishing.

// 외부 프로그램 출력 읽기
// "표준 출력"과 "표준 에러 출력"을 출력
stdout = p.getInputStream();
BufferedReader out_br = new BufferedReader(new InputStreamReader(stdout));
String line = null;
while ( (line=out_br.readLine()) != null) out.println(line);

stderr = p.getErrorStream();
BufferedReader err_br = new BufferedReader(new InputStreamReader(stderr));
while ( (line=err_br.readLine()) != null) out.println(line);

// 외부 프로그램 반환값 출력 (이 부분은 필수가 아님)
System.out.println("Exit Code: " + p.exitValue());
System.exit(p.exitValue()); // 외부 프로그램의 반환값을, 이 자바 프로그램 자체의 반환값으로 삼기

반응형

+ Recent posts