【发布时间】:2012-11-06 01:22:00
【问题描述】:
我正在尝试打开一个 shell (xterm) 并与之交互(编写命令并读取 shell 的输出)
这是一个不起作用的代码示例:
public static void main(String[] args) throws IOException {
Process pr = new ProcessBuilder("xterm").start();
PrintWriter pw = new PrintWriter(pr.getOutputStream());
pw.println("ls");
pw.flush();
InputStreamReader in = new InputStreamReader(pr.getInputStream());
System.out.println(in.read());
}
当我执行这个程序时,会打开一个“xterm”窗口并且没有输入“ls”命令。 只有当我关闭窗口时,我才会打印“-1”,并且不会从 shell 中读取任何内容
重要-
我知道我可以使用:
进程 pr = new ProcessBuilder("ls").start();
要获得输出,但我需要打开“xterm”以供其他用途
非常感谢
【问题讨论】:
-
标题具有误导性。 xterm 是运行 shell 的终端应用程序。它本身不是一个外壳。
标签: java linux process terminal processbuilder