我的程序
public void run() {
 try {
  process = Runtime.getRuntime().exec("cmd /c dir");
//  Process process = Runtime.getRuntime().exec("java WEB-INF.classes.chan.Hello.Test2");
//  Process process = Runtime.getRuntime().exec("cmd /c dir");
  print();
  Thread.sleep(1000);
 
  PrintWriter pw = new PrintWriter(process.getOutputStream());
  pw.println("dir");
  print();
  Thread.sleep(1000);
 
  pw.println("cd /");
  print();
  Thread.sleep(1000);
 
  pw.println("dir");
  print();
  Thread.sleep(1000);
 
//  process.wait();
 } catch (Exception e) {
  e.printStackTrace();
 } 
// while(isStop)
//  ;
// destroy();
// System.out.println("been destroyed!");
}//run其中print()方法是:
public void print() {
 String line = "";
 try {
  BufferedReader reader = new BufferedReader(new InputStreamReader(
   process.getInputStream()));
  while ((line = reader.readLine()) != null)
  System.out.println(line);
  System.out.println("=============");
  BufferedReader error = new BufferedReader(new InputStreamReader(
   process.getErrorStream()));
  while ((line = error.readLine()) != null)
  System.out.println(line);
 } catch (Exception e) {
  e.printStackTrace();
 } 
}//print
=====================
这只是一个小测试,目的是想用PrintWriter向进程中写入字串。
但是最终输出的结果是第一个【dir】有结果,然后后面【dir】、【cd /】、【dir】都之是打印出了“=====”!
不解!

解决方案 »

  1.   

    而且,我调试的时候,程序经常会在System.out.println() dir显示的内容之后,莫名其妙的停在while ((line = reader.readLine()) != null)这一行,不往下走了!!
    不能说是死循环,也不能说条件表达式不正确,暂时没有找出原因!
    莫名其妙!
    请教大家……
      

  2.   

    pw.println("dir");这句你想把DIR命令传到process中,但这没有用。
      

  3.   

    gl74gs48() 为什么没有用?
    应该怎么写?
      

  4.   

    IO流中断,当然要停在while ((line = reader.readLine()) != null)这一行,
      

  5.   

    问题已经解决。
    解决方法:使用单独的thread来分别处理stdin、stdout、stderr。