3

grepJava では、コマンドを呼び出して、その出力を stdout に送信したいと考えています。私がすることができます:

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 を (たとえば によってreadlink(/proc/self/fd/1)) 見つけてから を呼び出すpb.redirectOutput(ProcessBuilder.Redirect.appendTo(new File(MYSTDOUTFILE)));ことですが、より良い方法はありますか?

4

0 に答える 0