日期:2014-05-20  浏览次数:20693 次

关于exec后读取结果的问题
运行环境:linux

Process process = Runtime.getRuntime().exec(new String[] {"sh", "-c", "命令"});
BufferedReader bufferedOut = new BufferedReader(new InputStreamReader( process.getInputStream()));

String str;
while(null != (str = bufferedOut.readLine()) {
...
}

问题:上面的代码,能否保证所有的输出都被读取到?
假如命令执行很慢,而读取很快,不会不会命令还没执行完,就readLine等于null了,这样就没有读完所有的输出了!

------解决方案--------------------
在没有读到结束符的时候,会一直读