java執行shell/cmd命令

來源:互聯網
上載者:User

標籤:get   stack   logs   char   process   空格   runtime類   外部程式   home   

try {            Process p =Runtime.getRuntime().exec("chmod 777 /home/bomb/MoveToy/WebRoot/a.sh " );            p.waitFor();                        Process pro = Runtime.getRuntime().exec(" /home/bomb/MoveToy/WebRoot/./a.sh " + num);            pro.waitFor();            System.out.println("run");            java.io.InputStream out = pro.getInputStream();            int i;            String a = "";            String b = "";            int n=0;            ArrayList<String> tmp = new ArrayList<String>() ;            while ((i = out.read()) != -1) {                char c=(char)i;                if(i==10)                {                    //System.out.println(a);                    tmp.add(a);                    a="";                    continue;                }                if(i!=13&&i!=10)                { //System.out.println(n++ +" : "+c+" "+i);                    a += c;                }            }                        int len=tmp.size();            //提取耗散值            String [] tmphaosan=new String [len];            for(i=0;i<len;i++)            {                tmphaosan[i]=tmp.get(i).split(" ")[1];                //System.out.println(tmp.get(i).split(" ")[1].split("\\n")[0]);            }            String ans="";            String anss="";            for(i=1;i<len;i++)            {                ans="";                String t1=tmp.get(i-1).split(" ")[0];                String t2=tmp.get(i).split(" ")[0];                for(int j=0;j<t1.length();j++)                {                    //確保空格在後                    if(t2.charAt(j)==‘E‘)                    {                        //System.out.println(j+1+" "+t1.charAt(j)+" "+t2.charAt(j));                        ans=(j+1)+","+ans;                    }                    if(t1.charAt(j)==‘E‘)                    {                        ans+=(j+1);                        ans+=",";                    }                }                ans+=tmphaosan[i];                ans+=‘;‘;                anss+=ans;            }            //System.out.println(anss);            PrintWriter pw = response.getWriter();            pw.write(anss);        } catch (Exception e) {            System.out.println(num);            e.printStackTrace();        }

通過runtime類產生一個子進程,等待子線程執行完成。並且通過截獲標準輸出資料流來讀取外部程式的輸出內容。

java執行shell/cmd命令

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.