在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