参见英文答案 >
How to make pipes work with Runtime.exec()? 3个
我使用以下代码来获取系统中运行的所有进程的详细信息:
Process p = Runtime.getRuntime().exec("ps aux");
BufferedReader stdInput = new BufferedReader(new
InputStreamReader(p.getInputStream()));
BufferedReader stdError = new BufferedReader(new
InputStreamReader(p.getErrorStream()));
我想用管道符号过滤ps aux,所以我用它:
Process p = Runtime.getRuntime().exec("ps aux | grep java");
它转到ErrorStream.后来我注意到管道符号(|)在Java中用作Bitwise包含OR运算符.所以我在管道符号前面使用了反斜杠,如下所示:
Process p = Runtime.getRuntime().exec("ps aux \\| grep java");
但它再次进入ErrorStream.我怎么能运行ps aux | grep java通过exec在Java中?