Runtime.exec与Process运行没结果是怎么回事儿呀?在XIAN等。

下边是代码,晕死了,怎么回事儿呀,没有输出结果。我是在LINUX上运行的
[code="java"]
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;

public class test {
public static void main(String[] args) {
Process process=null;
Runtime rt=Runtime.getRuntime();
System.out.println("start");
try {
process=rt.exec("ps -aux|grep tomcat");
InputStream is=null;
InputStreamReader isr=null;
BufferedReader buffer=null;
String line=null;
is=process.getInputStream();
isr=new InputStreamReader(is);
buffer=new BufferedReader(isr);
while((line=buffer.readLine())!=null){
System.out.println(line+"----------");
}

} catch (IOException e) {
e.printStackTrace();
}
System.out.println("end");
}
}

[/code]

就27分,上了25,分不高,能解决了,有机会再给。

Process代表一个进程,你只能使用一个命令,这种linux的命令管道你需要自己把前一个进程的输入写到后一个进程。上面的例子你需要建两个Process,这里有个例子:
[url=https://gist.github.com/640092]Piping between processes[/url]

试试看这样:
先等待线程执行process.waitFor()
然后执行下process.getOutputStream().flush();

API使用的不对,你可以看看Runtime.exec调用的实现,它是把传入的参数以空格分割成多个命令,然后分别执行。这样的话,上面“ps -aux|grep tomcat”根本就不再是命令了

[quote]哦,那ps -aux|grep tomcat这个命令在LINUX上执行,他最终还是会分成两个命令的,是这意思吧。 [/quote]
本来是要按两个命令来执行的,但是经过Runtime.exec处理后,错误的变成了三个命令,这样执行肯定不行了。