Java中的Process.exitValue()
下面是我用来简单地从我的命令行程序打开和关闭Internet Explorer的程序.我在
Windows XP操作系统上用
Java 6运行我的程序:
Runtime runtime = Runtime.getRuntime(); Process p1 = runtime.exec("C:Program FilesInternet Exploreriexplore.exe"); Thread.sleep(5000); p1.destroy(); Thread.sleep(2000); System.out.println("p1.exitValue(): "+p1.exitValue()) 退出值为:1. Javadoc说:按照惯例,值0表示正常终止. 然后我评论了p1.destroy而不是从我的Java程序关闭浏览器,我手动关闭了窗口(文件>退出).在这种情况下,p1.exitValue开始返回’0′. 我的问题是: >为什么程序在第一种情况下将退出代码返回为“1”? JVM是否将p1.destroy()视为终止程序的异常方式? 谢谢你的阅读, 解决方法
实际上,这是两个问题:-)
>几乎可以肯定的是,IE本身捕获了它被外部关闭并决定返回该错误代码的事实(见下文2).所以不,JVM不会将p1.destroy()视为一种特殊情况,但受影响的流程可能会. 我应该提一下,有些情况下进程不会影响退出代码.在某些类UNIX操作系统下,如果由于某些严重故障(例如分段违规或暴力外部关闭)而导致进程退出,则操作系统可以将退出代码设置为指示此值的值.从记忆中,它是128加上信号编号. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |