我正在使用ProcessBuilder执行命令并获取输出。这很好用,但过了一段时间它只是挂起来,我无法看到我在这里出错的地方。我希望看到一个最终答案,用于执行返回结果的ProcessBuilder命令,并且不会给我留下大量打开的文件描述符,最终导致我的命令挂起。
// Send command, get response
public static String command(String cmd) {
String out = "no response";
try {
ProcessBuilder pb = new ProcessBuilder("/system/bin/sh", "-c", cmd);
pb.redirectErrorStream(true);
Process process = pb.start();
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(process.getInputStream()));
StringBuilder response=new StringBuilder();
String line;
while ((line = bufferedReader.readLine()) != null) {
response.append(line + "\n");
}
bufferedReader.close();
if (response.toString().length() > 0) {
out = response.toString().trim();
}
}
catch (IOException e) {
out = "Error: "+ e.toString();
}
return out;
}