【发布时间】:2013-07-28 17:16:40
【问题描述】:
我想使用 java 打开一个外部应用程序。
Process p = Runtime.getRuntime().exec("/Users/kausar/myApp");
这会运行我在活动监视器中看到的过程。 现在我运行的文件实际上是控制台应用程序,它接收命令并根据这些命令给出响应。 例如,如果我去终端并输入相同的内容
Kausars-MacBook-Air:~ kausar$ /Users/kausar/myApp
myApp>
现在我可以向应用程序发出命令,例如
myApp> SHOW 'Hi There'
这些是在控制台应用程序中作为键盘输入的命令,它们不是参数。我已经看到了不同的参数方法。我也尝试了以下方法,但无法正常工作。
String res;
String cmnd = "SHOW \'Hi There\'";
OutputStream stdin = null;
InputStream stdout = null;
stdout = p.getInputStream();
stdin = p.getOutputStream();
stdin.write(cmnd.getBytes());
stdin.flush();
p.waitFor();
BufferedReader input = new BufferedReader(
new InputStreamReader(stdout));
while ((res = input.readLine()) != null) {
System.out.println(res)
}
input.close();
p.destroy();
它什么也不显示,而使用“/bin/bash -c ls”的相同程序可以正常工作。 请帮忙!
【问题讨论】:
-
您将 stderr 定义为输入流并将 p.getInptStream 分配给 stdout。
-
@Guanxi 已更正,可能是复制粘贴错误,谢谢指出
标签: java macos console command