標籤: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命令