public static void main(String[] args) {
Process p = null;
try {
//p = Runtime.getRuntime().exec("notepad");//-------------0
                  //p = Runtime.getRuntime().exec("shutdown -s -t 3600");//-------------1
Thread.sleep(5000);
                  //p = Runtime.getRuntime().exec("shutdown -a");//------------2
} catch (Exception e) {
e.printStackTrace();
}
p.destroy();
}
执行0:
用exec运行notepad,5秒后notepad结束,java程序结束。一切正常
(执行1)或(执行1和2):
用exec运行shutdown -s -t 3600,5秒后java程序结束,shutdown不能结束请问高手何故?怎样用Java结束shutdown进程?

解决方案 »

  1.   

    是什么样的操作系统,命令
    shutdown -s -t 3600
    能够保证关机吗?
      

  2.   

    就是WindowsXP,
    在cmd下运行shutdown -s -t 3600能够保证关机,运行shutdown -a就能结束shutdown进程
      

  3.   

    public static void main(String[] args) {
    Process p = null;
    try {
    //p = Runtime.getRuntime().exec("notepad");//-------------0
      //p = Runtime.getRuntime().exec("shutdown -s -t 3600");//-------------1
    Thread.sleep(5000);
      //p = Runtime.getRuntime().exec("shutdown -a");//------------2
    } catch (Exception e) {
    e.printStackTrace();
    }
    p.destroy();
    }
    没必要像这么麻烦~!
      

  4.   

    //p = Runtime.getRuntime().exec("shutdown -a");//------------2
    Thread.sleep(100);
    在该行将进程sleep一下就正常了.具体没看exec的源码,原因还未知。
      

  5.   

    果然,我这得sleep200以上才行
      

  6.   

    楼主可以看下这篇文章,我简单看了下,http://www.qqread.com/java/2008/07/d418748.html应该是exec运行时不阻塞方式调用导致的那个关闭没有效果,将Tread.sleep(100)换成p.wartFor();让exec阻塞安全退出就会有想要的效果了。
      

  7.   

     不是这么写的吗p = Runtime.getRuntime().exec(cmd /c"shutdown -s -t 3600");//