Re: [問題] 如何使用Runtime呼叫Linux底下的程式並 …

看板java作者 (cat1028)時間17年前 (2007/10/15 14:21), 編輯推噓2(200)
留言2則, 2人參與, 最新討論串4/4 (看更多)
我現在遇到的問題是,我想用Runtime.exec()來執行"source"這個指令 但是不管我怎麼改就是會出現error或是有exception的問題出現 不過"source"不是本來就是linux的內建指令嗎??? 以下是我的程式碼: /*************************************************************/ static void SourceSOCE() throws IOException { // invoke a shell and give command to it Runtime runtime = Runtime.getRuntime() String[] args = new String[]{"/bin/sh", "-c", "source /backup/cad/cadence/CIC/soc.csh"}; Process proc = runtime.exec(args); try { if (proc.waitFor() != 0) { System.err.println("exit value = " + proc.exitValue()); System.out.println("Source failed!!"); } } catch (InterruptedException e) { System.err.println(e); } } /************************************************************/ ※ 引述《jlovet (你這可惡的騙子)》之銘言: : ※ 引述《dog0629 (狗狗)》之銘言: : : 我現在的程式: : : Runtime rt = Runtime.getRuntime(); : : Process proc = rt.exec(new String[] {"dv &", "null" } ); : : InputStream stdin = proc.getInputStream(); : : InputStreamReader isr = new InputStreamReader(stdin); : : BufferedReader br = new BufferedReader(isr); : : 可是這樣在LINUX下執行會產生 : : Wrong Commend : : java.io.IOException: java.io.IOException: dv &: not found : : 的錯誤訊息 : ㄜ...不知道你有沒有寫過C... : 要執行外部指令有兩種... : 一種是 system, 他會呼叫預定的shell, /bin/sh 來執行你給的命令 : 這種你才可以有 dv & 這樣的指令 : Java的Runtime.exec 要給完整的程式PATH : 例如 /bin/ls : 你參考一下APIDOC : public Process exec(String command) 像這一種的 : command就只能單純是執行檔的位置,不能連參數都放進去 : 要放參數的確就像你寫的一樣... : 可是array的第一個string還是執行檔名稱 : 當然..你的電腦上找不到 "dv &"這個檔案.... : 那...Java可以呼叫shell嗎 : 應該可以吧...我沒有試過 : rt.exec(new String[]{"/bin/sh","-c","dv","&"}) -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.129.25.211

10/16 11:30, , 1F
Source 的 path ?
10/16 11:30, 1F

10/17 13:12, , 2F
path = /backup/cad/cadence/CIC/soc.csh
10/17 13:12, 2F
文章代碼(AID): #174mRR-W (java)
文章代碼(AID): #174mRR-W (java)