2014-12-26 2 views
1

java에서이 명령을 실행하려고하지만 할 수 없습니다. 제발 도와 주실 수 있습니까? 내가 이것을 ssh에서 실행하려고하면 잘 동작한다.EOF가있는 java run shell 명령

문자열 cmd = "myprog -t < < EOF show version EOF";

프로세스 p = Runtime.getRuntime(). exec (cmd);

답변

1

명령이 처리중인 표준에 쓰고 있습니다. 대신 Java 코드에서 해당 프로세스에 쓸 수 있습니다. 예 :

String cmd = "myprog -t"; 
String arg = "show version"; 
try { 
    Process p = Runtime.getRuntime().exec(cmd); 
    PrintStream ps = new PrintStream(p.getOutputStream()); 
    ps.println(arg); 
    ps.flush(); 
    final StringBuilder sb = new StringBuilder(); 
    final InputStream is = p.getInputStream(); 
    Thread t = new Thread(new Runnable() { 
     @Override 
     public void run() { 
      try (BufferedReader br = new BufferedReader(
        new InputStreamReader(is))) { 
       String line; 
       while ((line = br.readLine()) != null) { 
        sb.append(line).append(System.lineSeparator()); 
       } 
      } catch (Exception e) { 
       e.printStackTrace(); 
      } 
     } 
    }); 
    t.start(); 
    try { 
     p.waitFor(); 
    } catch (InterruptedException e) { 
     e.printStackTrace(); 
    } 
    try { 
     t.join(); 
    } catch (InterruptedException e) { 
     e.printStackTrace(); 
    } 
    System.out.println(sb.toString()); 
} catch (IOException e) { 
    e.printStackTrace(); 
} 
+0

대단히 감사합니다. – user865238