Java Runtimer.getRuntime().exec()資源釋出問題

摘要:Java

今天意外的找到一篇文章

Remember to Close Your Streams When Using Java's Runtime.getRuntime().exec()

http://mark.koli.ch/2011/01/leaky-pipes-remember-to-close-your-streams-when-using-javas-runtimegetruntimeexec.html

 

由於我程式有寫一些在啟動Linux下的指令,而可能無預期的導致有些程式沒有關閉,而造成資源消耗。

 

所以得在執行Java runtime exec後,關閉該些執行所產生的I/O串流。

 


    public static void exeCommand(String command)
    {
        System.out.println(command);
        Process p = null;
        try{
            p = Runtime.getRuntime().exec(command);
        }catch (Exception ex)
        {
            ex.printStackTrace();
        }
        finally {
            closeQuietly(p.getOutputStream());
            closeQuietly(p.getInputStream());
            closeQuietly(p.getErrorStream());
        }
    }