2013-08-19 2 views
4

런타임에 Linux 명령을 실행하는 간단한 프로그램을 사용해 보았습니다. 그러나 다음 프로그램은 아무런 오류없이 컴파일되고 실행되지만 텍스트 파일은 의도 한대로 생성되지 않습니다.이 프로그램에 문제가 있습니까?Java - 런타임의 명령 실행

import java.io.*; 
class ExecuteJava 
{ 
    public static void main(String args[]) 
    { 
      String historycmd = "cat ~/.bash_history >> Documents/history.txt"; 
      try 
      { 
        Runtime runtime = Runtime.getRuntime(); 
        Process proc = runtime.exec(historycmd); 
      } 
      catch(Exception e) 
      { 
        System.out.println(e); 
      } 
    } 
} 
+2

이 코드는 현재 사용중인 디렉토리의 'Documents'디렉토리에 프로그램을 실행하려고 시도하고 있습니다. 해당 디렉토리가 존재합니까? – andy256

+0

@ andy256 그래, 그렇지. –

답변

1

추가 연산자 >>은 명령 셸의 일부로 해석되어야합니다. 사용

String[] historycmd = 
      { "bash", "-c", "cat ~/.bash_history >> Documents/history.txt"}; 
+0

고맙습니다.이 방법이 효과적입니다. –

2

Process에서 제공하는 일부 기능을 사용해보십시오. exitValue부터 시작하겠습니다. 일반적으로 -1은 문제가 발생했음을 나타내며 0은 특히 나쁜 일이 없다는 것을 의미합니다.

InputStreamError Stream도 시도한 후 완전히 읽으십시오. 어느 쪽이든 당신에게 유용한 피드백이 있는지보십시오.

이외의 것을 시도해보십시오. 및 y256은 의견에서 제안합니다. Documents 디렉토리가 프로그램의 실행 디렉토리에 있는지 확인하십시오.