作者jehovah (Lucius)
看板java
标题Re: [问题] getRuntime().exec() hangs
时间Fri Jul 8 00:19:58 2011
※ 引述《cklonger (22)》之铭言:
: ※ 引述《jehovah (Lucius)》之铭言:
: : 请教各位, 有时当我的程式码执行到
: : getRuntime().exec("xx")时会停住没有反应
: : 例如执行.sh档, 或是下shell command都有机会发生
: : 感觉像是dead lock
: 去用inputStream 把process的执行结果印出来
: 通常是系统不认得java下的指令
: 例如cp /home/aaa ./aaa
: linux可以执行
: 但是用getRuntime().exec
: 他会找不到cp
: 要改成/sbin/cp或是/bin/cp
: 另外还有权限问题
: 就是指令当时的权限开不了某些资源
: 这些都要把process的执行结果印出来才能判断
: : 这个问题困扰我很久了, 尤其它是偶发性的并非一定会发生
: : 不知该怎麽处理才好..可以给我一些指教吗, 谢谢~!
: : 额外请教个问题
: : 目前我都是new thread去做getRuntime()的指令, 避免主程式停掉
: : 如果不幸的这支thread hang住了, 有甚麽方法能够终结它吗 ^^
: : 谢谢
抱歉先前贴出来的code是错误的...我更新的code在这边
https://gist.github.com/1071059 不好意思!
不好意思还是来问相同的问题, 两位的指点我都仔细看过了, 十分感谢!
我仿照了tkcn大的提示写了一个class来处理exec(), 但是仍会偶发性hang住
(同时参考了
http://tinyurl.com/2wsp5d 这篇文章)
hang住时我下ps去看process list 会发现我主程式的process变成了两支
ErrorStream与InputStream应该都确实去读出了
我埋message下去检查(72, 74行)
发现hang住时都是停在 Process process = rt.exec(args); 这行,
往下的code都不会执行
小弟不才..有劳再指点一二, 谢谢!!
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 1.169.176.143
1F:→ tkcn:这份code正确吗? 我怎麽觉得你的code根本卡在 main 07/08 00:24
2F:→ tkcn:这样不会执行 run(),你的 thread 完全写错了 07/08 00:26
3F:→ jehovah:对不起, 由於我不在自己的电脑, code是刚刚key出来的>< 07/08 00:47
4F:→ jehovah:我会再update过程式码, 让您见笑了不好意思^^ 07/08 00:54
※ 编辑: jehovah 来自: 59.120.186.181 (07/08 12:59)
5F:→ tkcn:目前程式我跑起来没有任何问题 07/08 13:22