java - 如何在 java Runtime.exec 中使用管道

标签 java pipe runtime.exec

此命令行的输出为 null。

Process result = Runtime.getRuntime().exec(new String[]{"/usr/bin/find",baseDir+"/..","-type","f","|","/usr/bin/grep",filter1,"|","/usr/bin/grep",filter2,"|","/usr/bin/wc","-l"});
result.waitFor();
BufferedReader echo = new BufferedReader(new InputStreamReader(result.getInputStream()));
writer.print(echo.readLine());
echo.close();

是管道“|”吗?

最佳答案

要获取像 | 这样的 shell 命令,请使用 /bin/bash 作为 exec 的第一个参数,使用 -c 作为第二个参数,整个字符串(包括 find、它的参数和管道等)作为第三个。

Process result = Runtime.getRuntime().exec(new String[]{"/bin/bash", "-c", "/usr/bin/find " + baseDir+"/.. -type f | /usr/bin/grep " +filter1 + "| /usr/bin/grep "+filter2+" | /usr/bin/wc -l"});

关于java - 如何在 java Runtime.exec 中使用管道,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31998982/

相关文章:

java - ArrayList<Double> 插入(java)

c - 使用命名管道的 C 中的 IPC

java - 使用 Java 从 BAT 文件获取输出

C语言&signintHandler

c - Perl,我如何为我的 exec'd child 创建一个管道?

java - 程序终止时终止进程运行 `exec`

java - 使用java在cmd中执行多个命令

java - 在android中实现应用程序范围的缓存

java - 将 "AES"指定为 KeyGenerator.getInstance() 中的算法究竟有什么作用?

java - 如何修复从 start.spring.io 初始化的新 Spring Boot 应用程序的 Maven 构建中的错误