我正在通过我的Java程序运行grep命令。在命令行上运行grep有时会在类型的stderr上写入错误:No such file or directory
。我希望在我的Java程序中检测到由于通过程序执行grep命令而发生此错误。我怎样才能实现我的这个目标?这是我到目前为止所写的:
Runtime rt = Runtime.getRuntime();
String[] cmd = {"/bin/sh", "-c", "grep -c 'Search_String' /path/to/file(s)/being/searched"};
Process proc = rt.exec(cmd);
BufferedReader is = new BufferedReader(new
InputStreamReader(proc.getInputStream()));
String line;
while ((line = is.readLine()) != null) {
System.out.println(line);
}
答案 0 :(得分:1)
您可以检测进程是否返回错误;正如@Dakoda所提到的那样,exitValue()
在进程结束之前不会有退出值,但使用waitFor()
将阻塞,直到进程结束并返回退出值:
int rv = rt.waitFor();
if (rv != 0) { ... }
错误输出通常在stderr
而不是stdout
,因此要阅读您使用的错误:
BufferedReader is = new BufferedReader(
new InputStreamReader(proc.getErrorStream()));