java运行linux命令获得返回值的问题

2024-11-29 21:39:37
推荐回答(3个)
回答1:

inputStream = Runtime.getRuntime().exec(cmd);

java的这个方式,得到的是控制台的输出流,
也就是linux命令运行完,显示在屏幕上的东西,都以流的方式传递给java了,

可以通过下边的方式
InputStreamReader insr = new InputStreamReader(inputStream, “GBK”);
BufferedReader br = new BufferedReader(insr);
while (br.ready()) {
String line = br.readLine();
}

得到屏幕上显示的一行行内容,解析得到你想要的结果。

InputStreamReader 最后一个参数,是设置显示流是什么字符集的,如果不正确,请自行调整一下。

回答2:

因为有shell pipe。看这个例子:

String[] cmd = {
"/bin/sh",
"-c",
"ls /etc | grep release"
};

Process p = Runtime.getRuntime().exec(cmd);

回答3:

管道命令是通过/bin/sh 解析的,java exec用的是系统exec函数族,所以就按照上面那个执行方法就好了