Runtime和Process
阿新 • • 發佈:2017-10-19
exce ack err for extend put 程序 reader art
private void runByshcommand(String command) { try { System.out.println("開始執行命令....."); Process process =null; process = Runtime.getRuntime().exec(command); //不管是輸出流還是錯誤流,都容易造成阻塞,造成死循環。建議另外弄個線程,這樣不會對主程序造成影響。 InputStream pro_in=process.getInputStream();//得到終端窗口中輸出的信息 InputStream pro_err=process.getErrorStream();//得到終端窗口中輸出的錯誤流 new getOutputStreamThread(pro_in,"NORMAL").run();//調用start()方法,則會通過JVM找到run()方法 new getOutputStreamThread(pro_err,"ERROR").run(); process.waitFor(); // 銷毀子進程 process.destroy(); process= null; System.out.println("命令執行成功"); } catch (Exception e) { e.printStackTrace(); } } public static class getOutputStreamThread extends Thread{ InputStream ins; String print_type; public getOutputStreamThread(InputStream is,String print_type){this.ins=is; this.print_type=print_type; } public void run(){ String szstr=""; BufferedReader in=new BufferedReader(new InputStreamReader(ins)); try { while((szstr=in.readLine())!=null){ System.out.println(print_type+":"+szstr); } } catch (IOException e) { e.printStackTrace(); } } }
Runtime和Process