如何在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