使用 Runtime.exec() 执行管道命令
在 Java 中,Runtime.exec() 通常用于执行 shell 命令。但是,尝试直接使用 Runtime.exec() 执行诸如“ls /etc | grep release”之类的管道分隔命令可能会由于管道处理中的跨平台差异而导致意外行为。
解决方案:
1.创建脚本:
为了确保独立于平台的管道执行,请编写一个执行所需管道的脚本并执行该脚本而不是单独的命令。例如:
// script.sh ls /etc | grep release
然后使用 Runtime.exec() 执行脚本:
String command = "/bin/sh script.sh"; Process child = Runtime.getRuntime().exec(command);
2.使用 Shell 调用:
另一种方法是直接调用 shell 并将管道分隔的命令作为单个参数传递。这可以使用以下代码来实现:
String[] cmd = { "/bin/sh", "-c", "ls /etc | grep release" }; Process child = Runtime.getRuntime().exec(cmd);
以上是如何使用 Java 的 Runtime.exec() 可靠地执行管道命令?的详细内容。更多信息请关注PHP中文网其他相关文章!