在 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中文网其他相关文章!