3

在 Java 中,我想调用grep命令并将其输出发送到标准输出。我可以做这个:

ProcessBuilder pb = new ProcessBuilder("grep", "regexp", "foo.txt");
pb.redirectOutput(ProcessBuilder.Redirect.INHERIT);
pb.redirectError(ProcessBuilder.Redirect.INHERIT);
pb.start().waitFor();

但是,grep进程的stdout实际上是通过管道传送到java进程,然后打印出来的。当数据很大时,这可能是低效的。

一个肮脏的方法是找到java进程的stdout(例如by readlink(/proc/self/fd/1))然后调用pb.redirectOutput(ProcessBuilder.Redirect.appendTo(new File(MYSTDOUTFILE)));,但是有更好的方法吗?

4

0 回答 0