说明:1.运行结果:farther receive:child receive:I am your fartherI am your son
2.数据通过readline()方法读出时已经去掉了”/n”符 ,所以结果不会换行
3.通过获得子进程的输入输出流,当父进程将数据写到管道后,必须在此管道关闭后,子进程才能操作。子进程发送数据也是一样的
4.进程间通信是异步的,从运行结果也可以看出。
5.在父进程中创建一个用户进程或者本地进程,用:Runtime.getRuntime().exec(“java -cp d:/java/child.jar; com.xie.netcourse3.Child”);
//Child.java
package com.xie.netcourse3;
import java.io.*;
public class Child {
public static void main(String[] args) throws IOException{
//准备接收父程序消息
BufferedReader s = new BufferedReader(new InputStreamReader(System.in));
String line = null;
StringBuffer all = new StringBuffer();
//接收父程序消息
while((line = s.readLine()) != null){
all.append(line);
}
System.out.println(“child receive:”+all.toString()+”/n”);
s.close();
//当父程序关闭输入流时,执行操作
String ret = “I am your son”;
//返回消息给父程序
BufferedWriter bw=new BufferedWriter(new OutputStreamWriter(System.out));
bw.write(ret) ;
bw.flush();
bw.close();
}
}
//Farther.java
package com.xie.netcourse3;
import java.io.*;
public class Farther {
public static void main(String[] args) throws IOException, ClassNotFoundException, InterruptedException{
//执行程序
Process process = Runtime.getRuntime().exec(“java -cp d:/java/child.jar; com.xie.netcourse3.Child”);
//发送消息
BufferedWriter bw=new BufferedWriter(new OutputStreamWriter(process.getOutputStream()));
bw.write(“I am your farther”);
bw.flush();
//必须关闭才能收到信息
bw.close();
//读取程序返回消息
BufferedReader br = new BufferedReader(new InputStreamReader(process.getInputStream()));
String line = null;
StringBuffer all = new StringBuffer();
while((line = br.readLine()) != null){
all.append(line);
}
br.close();
//显示返回消息
System.out.println(“farther receive:”+all.toString());
}
}
文章知识点与官方知识档案匹配,可进一步学习相关知识Java技能树首页概览91484 人正在系统学习中
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!