主要目的是通過Java代碼設置環境變量。以編程方式向當前進程添加環境變量
Process process = Runtime.getRuntime().exec("export MY_ENV=123");
總是返回一個新的進程。但我希望它爲當前進程執行..有沒有辦法將輸出追加到當前進程?
主要目的是通過Java代碼設置環境變量。以編程方式向當前進程添加環境變量
Process process = Runtime.getRuntime().exec("export MY_ENV=123");
總是返回一個新的進程。但我希望它爲當前進程執行..有沒有辦法將輸出追加到當前進程?
inheritIO
可以給你提供了啓動過程的流當前進程waitFor
允許您等待外部過程完成示例:
new ProcessBuilder("/bin/ls").inheritIO()
.start()
.waitFor();
inheritIo()方法像魅力一樣工作! – shashantrika 2014-10-08 18:16:11
的Process
從exec
調用返回包含三個流:
process.getOutputStream()
,如果你寫不出來,會到正在運行的進程「管道」process.getInputStream()
,如果讀取,將包含標準輸出(ls
輸出)process.getErrorStream()
如果從中讀取,將包含標準錯誤輸出(來自運行ls
的錯誤消息,如果有的話)。作爲程序員,您需要從這些流中讀取數據並將它們輸出到程序的輸出中,如果這是您想要的。
另外,如果你想得到,也應該檢查process.exitValue()
。
它是有點共同設立單獨的線程來監視輸出和錯誤流
另請參見[當Runtime.exec()不會](http://www.javaworld.com/article/2071275/core-java/when-runtime-exec---won -t.html)提供了許多有關正確創建和處理流程的好建議。然後忽略它是指'exec'並使用'ProcessBuilder'來創建進程。 – 2014-10-07 19:13:23
這已被回答[在這裏](http://stackoverflow.com/questions/318239/how-do-i-set-environment-variables-from-java)。改變整個問題並不是一個好主意。我建議你恢復你的編輯。 – aioobe 2014-10-08 17:48:07