1
java에서이 명령을 실행하려고하지만 할 수 없습니다. 제발 도와 주실 수 있습니까? 내가 이것을 ssh에서 실행하려고하면 잘 동작한다.EOF가있는 java run shell 명령
문자열 cmd = "myprog -t < < EOF show version EOF";
프로세스 p = Runtime.getRuntime(). exec (cmd);
java에서이 명령을 실행하려고하지만 할 수 없습니다. 제발 도와 주실 수 있습니까? 내가 이것을 ssh에서 실행하려고하면 잘 동작한다.EOF가있는 java run shell 명령
문자열 cmd = "myprog -t < < EOF show version EOF";
프로세스 p = Runtime.getRuntime(). exec (cmd);
명령이 처리중인 표준에 쓰고 있습니다. 대신 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();
}
대단히 감사합니다. – user865238