在java中,process類提供了如下3個方法,用于讓程序和其他子進程進行通信。
InputStream getErrorStream():獲取子進程的錯誤流。
InputStream getInputStream():獲取子進程的輸入流。
OutputStream getOutputStream():獲取子進程的輸出流。
?
下面程序示范了讀取其他進程的輸出信息:
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 stubProcess p=Runtime.getRuntime().exec("javac");//運行javac命令,返回運行該命令的子進程ptry {//以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進程而言,它是輸出流,對于本程序而言,它則是輸入流。
判斷輸入流還是輸出流的角度:總是站在運行本程序所在內存的角度。