在java中,process類提供了以下3個方法,用於讓程序和其餘子進程進行通訊。java
InputStream getErrorStream():獲取子進程的錯誤流。spa
InputStream getInputStream():獲取子進程的輸入流。code
OutputStream getOutputStream():獲取子進程的輸出流。對象
下面程序示範了讀取其餘進程的輸出信息:blog
import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; public class ReadFromProcess { public static void main(String[] args) throws IOException { // TODO Auto-generated method stub Process p=Runtime.getRuntime().exec("javac");//運行javac命令,返回運行該命令的子進程p try { //以p進程的錯誤流建立BufferedReaderd對象,這個錯誤流是本程序的輸入流,對p進程則是輸出流 BufferedReader br=new BufferedReader(new InputStreamReader(p.getErrorStream())); String buff=null; while((buff=br.readLine())!=null) {//讀取每一行數據,並賦給buff字符串。 System.out.println(buff); } }catch (IOException ioe) { ioe.printStackTrace(); } } }
javac進程------------>本程序進程
數據從p進程流向本程序所在的內存內存
程序輸出結果以下:字符串
數據流對p進程而言,它是輸出流,對於本程序而言,它則是輸入流。get
判斷輸入流仍是輸出流的角度:老是站在運行本程序所在內存的角度。io