【发布时间】:2023-04-11 03:14:01
【问题描述】:
我想启动两个程序(如ProcessBuilder),这样第一个程序的输出就是第二个程序的输入。我还想要:
- 为了避免使用 shell(这样我就可以传递带空格的参数而无需转义);
- 为了避免所有数据流入父 Java 进程并返回(即有单独的线程只是为了从一个进程的 InputStream 复制到另一个进程的 OutputStream)。
如何做到这一点?
相关:Building a process pipe with ProcessBuilder in Java 7,但它使用 shell...
【问题讨论】:
-
无论如何你都必须实例化两个
ProcessBuilders,因为program1和program2将是两个独立的进程 -
如何互连它们的输出/输入流以直接从 program1 流向 program2,而不通过 java?
-
但是你必须... 就像 shell 创建匿名管道一样,你必须在 Java 中这样做。没有其他方法可以解决这个问题。
-
@fge, 1. 如何在Java中创建匿名管道? 2、如何将创建的管道指定给ProcessBuilder? (没有 JNI)
标签: java process pipe io-redirection