看板 java 關於我們 聯絡資訊
※ 引述《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
tkcn:這份code正確嗎? 我怎麼覺得你的code根本卡在 main 07/08 00:24
tkcn:這樣不會執行 run(),你的 thread 完全寫錯了 07/08 00:26
jehovah:對不起, 由於我不在自己的電腦, code是剛剛key出來的>< 07/08 00:47
jehovah:我會再update過程式碼, 讓您見笑了不好意思^^ 07/08 00:54
※ 編輯: jehovah 來自: 59.120.186.181 (07/08 12:59)
tkcn:目前程式我跑起來沒有任何問題 07/08 13:22