import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.OutputStreamWriter;
import java.util.Scanner;
public class GetCmd { private InputStream is=null;
;
public static void main(String args[]) throws IOException
{
OutputStream os=null;
String command=null;
ProcessBuilder pb=new ProcessBuilder("C://Windows//System32//cmd.exe");
Process p=pb.start();
Scanner s=new Scanner(System.in);
System.out.println("welcome come to my cmd ");
String res=null;
BufferedReader br=new BufferedReader(new InputStreamReader(p.getInputStream()));
os=p.getOutputStream();
res=br.readLine();
System.out.println(res);
while((res=br.readLine())!= null)
{
System.out.println(res);
}
System.out.println("debug");
}
}运行到while()的时候,程序会卡的那里不动,请教高手。不知道这是不是叫阻塞java进程通信

解决方案 »

  1.   

     while( br.readLine()!=null)
      

  2.   

    不动是在等着 cmd 传内容过来
      

  3.   

    在循环体内 判断下cmd输入的内容   while((res=br.readLine())!= null)
       {
         System.out.println(res);    if (res.equals("exit") ){
           break;
         }   }
      

  4.   

    res=br.readLine()等待读入进程p执行的输出一直阻塞着。可以把ProcessBuilder("C://Windows//System32//cmd.exe");改成ProcessBuilder("C://Windows//System32//cmd.exe","/c","dir");让进程p有输出,试一下。