下面是我用来简单地从我的命令行程序打开和关闭Internet Explorer的程序.我在Windows XP操作系统上用Java 6运行我的程序:
Runtime runtime = Runtime.getRuntime();
Process p1 = runtime.exec("C:\\Program Files\\Internet Explorer\\iexplore.exe");
Thread.sleep(5000);
p1.destroy();
Thread.sleep(2000);
System.out.println("p1.exitValue(): "+p1.exitValue())
Run Code Online (Sandbox Code Playgroud)
退出值为:1.
Javadoc说:按照惯例,值0表示正常终止. http://download.oracle.com/javase/6/docs/api/java/lang/Process.html#exitValue()
然后我评论了p1.destroy而不是从我的Java程序关闭浏览器,我手动关闭了窗口(文件>退出).在这种情况下,p1.exitValue开始返回'0'.
我的问题是:
谢谢你的阅读,
实际上,这是两个问题:-)
几乎可以肯定,IE本身捕获了它被外部关闭并决定返回该错误代码的事实(见下文2).所以不,JVM不会将其p1.destroy()视为特殊情况,但受影响的流程可能会.
退出值是特定于进程的,而不是特定于JVM的(甚至不是特定于操作系统的).换句话说,进程本身返回一个值以用作退出值.当你想到有办法破坏不涉及JVM的进程时,这是有道理的.
我应该提一下,有些情况下进程不会影响退出代码.在某些类UNIX操作系统下,如果由于某些严重错误(如分段违规或暴力外部关闭)而导致进程退出,则操作系统可以将退出代码设置为指示此值的值.从记忆中,它是128加上信号编号.
| 归档时间: |
|
| 查看次数: |
17627 次 |
| 最近记录: |