Runtime.getRuntime().exec(command) 阻塞

zn01611 2011-07-26 01:17:14
public int exec(String command) {

Process process = Runtime.getRuntime().exec(command); //此处有时候发生阻塞
DataInputStream stdout = new DataInputStream(process.getInputStream());

String line;
while ((line = stdout.readLine()) != null) {
mResultString += line + "\n";
}

process.waitFor();

return process.exitValue();


时而发生阻塞 怎么解决
...全文
341 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
zn01611 2011-07-26
  • 打赏
  • 举报
回复
具体咋实现啊
Process process = Runtime.getRuntime().exec(command);
StreamGobbler errorGobbler = new StreamGobbler(process.getErrorStream(), "ERROR");

// kick off stderr
errorGobbler.start();

StreamGobbler outGobbler = new StreamGobbler(process.getInputStream(), "STDOUT");
// kick off stdout
outGobbler.start();
process.waitFor();
这个是从网上找的方法 可是还是阻塞
Looking_Glass 2011-07-26
  • 打赏
  • 举报
回复
的确JAVA在进程流传递上存在问题。
解决方法:
通过第三方程序启动对应的程序。从而使得java与被启动程序之间无直接关系。同时第三方程序必须具有流接管功能。

58,454

社区成员

发帖
与我相关
我的任务
社区描述
Java Eclipse
社区管理员
  • Eclipse
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧