Runtime exec: 读InputStream & ErrorStream 没反应
2013-11-14 19:27
453 查看
用Runtime exec 执行一个命令时,我希望能读出命令的输出和error,于是我先读Input, 再读error
可是,用以上的代码执行程序,有时候程序会hang,一直卡在reader.readLine()这一行。
查了一下,原因是程序运行时在写stdout之前先写了stderr,所以以上的代码“假死”的原因是在没有读取stderr的情况下先读stdoutput,以致被block
解决方法可以是用thread并行读取stdout/err,或者可以看一下Apache Commons Exec这个库
Process p = Runtime.getRuntime().exec(command); BufferedReader reader = new BufferedReader(new InputStreamReader( p.getInputStream())); BufferedReader error = new BufferedReader(new InputStreamReader( p.getErrorStream())); String line = reader.readLine(); while (line != null) { output = output + line + "\n"; line = reader.readLine(); } reader.close(); while ((line = error.readLine()) != null) { System.out.println("ERROR: " + line); } error.close();
可是,用以上的代码执行程序,有时候程序会hang,一直卡在reader.readLine()这一行。
查了一下,原因是程序运行时在写stdout之前先写了stderr,所以以上的代码“假死”的原因是在没有读取stderr的情况下先读stdoutput,以致被block
解决方法可以是用thread并行读取stdout/err,或者可以看一下Apache Commons Exec这个库
相关文章推荐
- When Runtime.exec() won't
- 为什么Runtime.exec("ls")没有任何输出?
- When Runtime.exec() won't
- 调试总结:Ant,CLASSPATH,Runtime.exec() & ultraedit
- BufferedInputStream&BufferedOutputStream
- Exception in thread "png-cruncher_2" java.lang.RuntimeException: Timed out while waiting for slave a
- InputStreamReader & OutputStreamWriter
- DataInputStream && ObjectInputStream 示例
- 数 4000 据库备份 runtime.exec 去执行命令 返回 process 读取process的输入流 把数据写入执行文件里
- document.execCommand("BackgroundImageCache", false, true)
- 刨根问底Objective-C Runtime(1)- Self & Super
- Marketing Plan Pro 出现Runtime Error '457'
- Exception in thread "http-bio-8080-exec-2" java.lang.OutOfMemoryError: PermGen space
- 解决Runtime.exec() 无法读取命令输出
- NPAPI & NPRuntime 簡介 Scriptable Plugin
- JSF 1.2 and Tomcat 6.0.16, error parsing 'jsf-ri-runtime.xml' 的错误处理
- word中打字反应慢&&解决Excel2013在低配置电脑中响应慢的方法
- Description &&debugDescription && runtime(debug模式下调试model)
- ProcessBuilder和Runtime.exec的区别
- 使用Runtime.getRuntime().exec()在java中调用python脚本