请达人指点
package 进程间的通信;
import java.io.*;
public class MainProcess implements Runnable{
Process p=null;
/** Creates a new instance of MainProcess */
public MainProcess()
{
//new Thread(this).start();
try
{
p=Runtime.getRuntime().exec( "java ChildProcess ");
}
catch(Exception e)
{
e.printStackTrace();
}
new Thread(this).start();
}
public void run()
{
InputStream ism=p.getInputStream();
BufferedReader br=new BufferedReader(new InputStreamReader(ism));
try
{
while(true)
{
String str=br.readLine();
System.out.println(str+ ": ");
}
// br.close();
}
catch(Exception e)
{
e.printStackTrace();
}
}
public static void main(String args[])
{
MainProcess mp=new MainProcess();
}
}
//下面是子进程代码
package 进程间的通信;
import java.io.*;
public class ChildProcess {
/** Creates a new instance of ProcessTest */
public static void main (String args[])
{
while(true)
{
System.out.print( "communication\n ");
}
}
}//为什么读取到的内容为null,而不是communication
[解决办法]
你是在IDE工具里运行的吧?
这样在执行p=Runtime.getRuntime().exec( "java ChildProcess ")
是找不到ChildProcess.calss的,所以执行结果为null
你把代码拷到才C盘下,在命令行中执行C:\> java 进程间的通信(packageName).MainProcess
就可以了
[解决办法]
String line=null;
while((line = br.readLine()) != null)
System.out.println(line);
读数据用这个读,不然你还是显示null