input 是有内容输出的。
只是内容输出完了之后while()就不会跳出,readline()一直阻塞!!

解决方案 »

  1.   

    应该不是readLine的问题,执行命令的输出有没有问题呢
    你的括号{}好像不匹配,while后面少{,System.out.println("OK");后面少}
      

  2.   

    噢,System.out.println("OK")是临时写上去的,位置看错了。不好意思。
    执行命令的输出没有问题,和单独执行命令是一样的,就是到最后一行时
    停住了。
      

  3.   

    while ((line = input.readLine ()) != null)    // while 循环永远不会跳出!!!!
        System.out.println(line);
    }也是写的“标准终端”,exec的也是“标准终端”,这样你读一行,有写一行,死循环了。去掉System.out.println(line);
    就可以了。或则,你把输出重新定向一下。System的setOut(PrintStream out)
      

  4.   

    去掉了System.out.println(line)之后,也不行,还是死循环!
    而且好象不是这个原因,如果是的话,那应该是不断循环输出,那结果是
    输完之后就停住不再输出了。
      

  5.   

    我觉得你应该判断一下,如果输入的是某个单词,如“quit”,就让它退出阿,system.exit(0)
    while ((line = input.readLine ()) != null)    
    {
    System.out.println(line);
    if(Line.equals("quit"))
       System.exit(0) ;
    }待一会我测试一下。
      

  6.   

    readLine读取终端采用阻塞,因为终端没有如文件的EOF
      

  7.   

    这不是问题:因input为标准输入,while ((line = input.readLine ()) != null)是永远无法退出的。执行过程如下:
    input.readline():阻塞,等待用户输入,直到输入一回车,继续
    line = input.readLine():赋值
    line != NULL:判断。因为readLine是包括回车的,所以line至少包含一个回车,所以结果永远为真
    结论:死循环。
    解决办法如xuzhike() 所说。
      

  8.   

    没有办法判断最后的是什么单词。因为我想得到的是调用的那个程序的结果。
    比如说是“ls”命令。而不是等待用户的输入。那有没有办法使终端也有文件的EOF呀,或者使readline读取终端使不采用阻塞
    ??