如何在Java中通过exec使用管道符号

我正在使用以下代码来获取系统中正在运行的所有进程的详细信息:

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中用作按位包含或运算符。所以我在管道符号前面使用了反斜杠,如下所示:

Process p = Runtime.getRuntime().exec("ps aux \\| grep java");

但是,它再次进入ErrorStream。如何ps aux | grep java在Java中执行exec?

回答:

管道是shell的功能-您没有使用shell,而是在执行进程(ps)。

但实际上,您为什么要这样做?您的意思是:

“执行ps,然后将其输出通过管道传送到另一个程序(grep),并提取我需要的内容”

您只需要从的输出中提取想要的内容即可ps。使用Matcher,只注意java您的InputStream

http://download.oracle.com/javase/6/docs/api/java/util/regex/Matcher.html

以上是 如何在Java中通过exec使用管道符号 的全部内容, 来源链接: utcz.com/qa/404308.html

回到顶部