首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > J2SE开发 >

请达人指点解决方案

2012-01-11 
请达人指点package进程间的通信importjava.io.*publicclassMainProcessimplementsRunnable{Processpnul

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

热点排行