【发布时间】:2015-02-23 20:17:26
【问题描述】:
我想从 java 运行这个命令,但我做不到。 你能帮我吗? 当我尝试从 ssh 运行它时,它工作正常。
String cmd="myprog -t
进程 p = Runtime.getRuntime().exec(cmd);
【问题讨论】:
我想从 java 运行这个命令,但我做不到。 你能帮我吗? 当我尝试从 ssh 运行它时,它工作正常。
String cmd="myprog -t
进程 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();
}
【讨论】: