在Java 運行時中操作Shell 行為
使用Java 的Runtime.exec(String) 實用程式時,執行某些shell 命令之間可能會出現差異。要理解這些異常,我們必須深入研究 shell 操作的機制。
了解Shell 職責
Shell 執行支援指令執行的關鍵任務,包括:
執行原因失敗
透過Runtime.exec(String) 呼叫時,依賴Shell 的指令可能會失敗,因為:
解決方法
簡單但不完美:
使用Runtime.exec(String[]) 和將指令傳遞給shell解釋器允許直接命令執行:
String myFile = "some filename.txt"; String myCommand = "cp -R '" + myFile + "' $HOME 2> errorlog"; Runtime.getRuntime().exec(new String[] { "bash", "-c", myCommand });
穩健且安全:
為了提高安全性和穩健性,請使用ProcessBuilder 明確處理shell 職責:
String myFile = "some filename.txt"; ProcessBuilder builder = new ProcessBuilder( "cp", "-R", myFile, System.getenv("HOME")); builder.redirectError(ProcessBuilder.Redirect.to(new File("errorlog"))); builder.start();
以上是如何使用Java執行時間可靠地執行Shell指令?的詳細內容。更多資訊請關注PHP中文網其他相關文章!