【发布时间】:2011-11-05 19:02:32
【问题描述】:
我正在使用以下代码来获取系统中运行的所有进程的详细信息:
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 中用作按位包含 OR 运算符。所以我在管道符号前面使用了反斜杠,如下所示:
Process p = Runtime.getRuntime().exec("ps aux \\| grep java");
但它再次进入 ErrorStream。如何在 Java 中通过 exec 运行 ps aux | grep java?
【问题讨论】:
-
澄清一下,按位或运算符
|不会在字符串中解释,因此您不需要转义它。