我的代码如下: Process process = null; BufferedReader br = null; String line = ""; try { process = Runtime.getRuntime().exec("ls"); br = new BufferedReader(new InputStreamReader(process
.getInputStream())); while ((line = br.readLine()) != null) {
System.out.println(line);
} process.waitFor(); } catch (Exception e) {
e.printStackTrace();
} finally {
if (br != null) {
try {
br.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}执行后,没有任何输出,也没有异常当我执行 "cmd /c dir" 时没问题,正常输出请问是什么原因机器中装有 cygwin, cmd窗口下 dir , ls 都正常输出在线等 谢谢
你是不是dir切换到cygwin目录下了?
cmd窗口下 dir , ls 是 都正常输出你是不是dir切换到cygwin目录下了? 是什么意思cygwin 的 bin 目录已经设置到 path 里, ls命令可以在cmd下使用
p.getInputStream()中读取
ls 确实是 linux 命令
http://blog.csdn.net/ragic/archive/2010/05/12/5583164.aspx
ls等命令在cmd下都可以运行。Runtime.getRuntime().exec("ls");但我用这个报错
把命令改成"cmd /c ls",什么都不打印,process.waitFor()为1,语法错误。Runtime.getRuntime().exec("ls",new String[]{"path=C:\\cygwin\\bin"});打印的是工程路径下的目录求解释!
Runtime.getRuntime().exec();
还有:
process.waitfor();
上面这些都是啥意思,青简单介绍一下?
新手问一问。
按照你的建议,我改了下代码:Process process = null;
InputStream in = null;
InputStreamReader reader = null; BufferedReader br = null;
String line = ""; try {
ProcessBuilder pb = new ProcessBuilder("ls");
pb.redirectErrorStream(true);
process = pb.start(); process.getOutputStream().close();
in = process.getInputStream();
reader = new InputStreamReader(in);
br = new BufferedReader(reader); while ((line = br.readLine()) != null) {
System.out.println(line);
}
process.waitFor(); } catch (Exception e) {
e.printStackTrace();
} finally {
if (br != null) {
try {
br.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}关闭了process输入流,重定向了错误输出流,却还是没有结果输出"ls" 换成 "cmd","/c","dir" 却可以,不知道为什么除了配置 cygwin 的 bin 到 path 中,还需要别的配置吗?