`
junge8618
  • 浏览: 117799 次
  • 性别: Icon_minigender_1
  • 来自: 邵阳
社区版块
存档分类
最新评论

ShellCommand_Java代码中执行shell脚本_Process的输入、输出、错误流都需要关闭(2)

阅读更多
public static boolean execute(String shellFile)
    {
        //脚本文件为NULL或空值
        if (null == shellFile || shellFile.equals(""))
        {
            logger.warn("ShellCommand shellFile is null.");
            return false;
        }
        
        if (logger.isDebugEnabled())
        {
            logger.debug("bash " + shellFile);
        }
        
        try
        {
            Process process = Runtime.getRuntime().exec("bash " + shellFile);
            int iretCode = process.waitFor();
            
            try
            {
                if (iretCode != 0)
                {
                    BufferedReader br = new BufferedReader(
                            new InputStreamReader(process.getErrorStream()));
                    StringBuilder errorDesc = new StringBuilder();
                    
                    for (String str = br.readLine(); str != null; str = br
                            .readLine())
                    {
                        errorDesc.append(str);
                    }
                    
                    //zkf35483 新增关闭流操作
                    br.close();
                    logger.error("execute shell " + shellFile + " failed: "
                            + errorDesc);
                }
                else
                {
                    return true;
                }
            }
            catch (IOException e)
            {
                logger.error("IOException:", e);
            }
            finally
            {
                process.getErrorStream().close();
                process.getInputStream().close();
                process.getOutputStream().close();
            }
            
        }
        catch (Exception e)
        {
            logger.error("Execute " + shellFile + " exception:", e);
        }
        
        return false;
    }
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics