Runtime.getRuntime(). exec()를 통해 실행 된 출력 또는 Java 프로그램을 로그 파일에 쓰려고합니다. 다음 코드를 사용하고 있습니다.Runtime.getRuntime(). exec()로 시작된 Java 프로그램의 출력
public class Thread_Write extends Thread {
int id;
public void run() {
try {
File log = new File("./log"+id+".txt");
log.createNewFile();
FileWriter fw = new FileWriter("./"+"log"+id+".txt",true);
Runtime runtime = Runtime.getRuntime();
Process process = runtime.exec("java WriteToFile "+id);
InputStream is = process.getInputStream();
InputStreamReader isr = new InputStreamReader(is);
BufferedReader br = new BufferedReader(isr);
String line;
while ((line = br.readLine()) != null) {
fw.write(line);
}
} catch (IOException e) {
e.printStackTrace();
}
}
public Thread_Write(int i) {
super();
this.id = i;
}
public static void main(String[] args) {
for (int i =0 ; i<10;i++) {
(new Thread_Write(i)).start();
}
}
}
"java WriteToFile id"는 터미널에 예외를 작성한다고 가정하지만, 불행히도 아무 것도 얻지 못하고 있습니다. 이상한 점은이 명령을 "echo test"로 변경하면 로그 파일의 끝에 "test"가 올바르게 추가된다는 것입니다. 왜 그런가?
건배.
아마도 입력 스트림이 아닌 프로세스의 오류 스트림에 기록되기 때문일 수 있습니다. – assylias