在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 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进程而言,它是输出流,对于本程序而言,它则是输入流。
判断输入流还是输出流的角度:总是站在运行本程序所在内存的角度。