读书人

请达人指点解决方案

发布时间: 2012-01-11 22:28:46 作者: rapoo

请达人指点
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

读书人网 >J2SE开发

热点推荐