使用ProcessBuilder获取命令输出会在一段时间后挂起

时间:2014-01-16 00:56:24

标签: java processbuilder

我正在使用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;
    }

0 个答案:

没有答案