今生遇到这样的问题是我的荣幸
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
[解决办法]
在eclipse中开始我也不能执行,现在可以了。
在
p=Runtime.getRuntime().exec( "java packageName.ChildProcess ");
中加上packageName就可以了。
因为在Runtime.getRuntime().exec()中执行java时,是以工程路径为相对路径的(你可以把ChildProcess去掉包放在工程目录下试一试 )。
所以你不加包名的话是找不到ChildProcess的。