加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

Java中的Process.exitValue()

发布时间:2020-12-15 08:37:55 所属栏目:Java 来源:网络整理
导读:下面是我用来简单地从我的命令行程序打开和关闭Internet Explorer的程序.我在 Windows XP操作系统上用 Java 6运行我的程序: Runtime runtime = Runtime.getRuntime(); Process p1 = runtime.exec("C:Program FilesInternet Exploreriexplore.exe");Th
下面是我用来简单地从我的命令行程序打开和关闭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表示正常终止.
http://download.oracle.com/javase/6/docs/api/java/lang/Process.html#exitValue()

然后我评论了p1.destroy而不是从我的Java程序关闭浏览器,我手动关闭了窗口(文件>退出).在这种情况下,p1.exitValue开始返回’0′.

我的问题是:

>为什么程序在第一种情况下将退出代码返回为“1”? JVM是否将p1.destroy()视为终止程序的异常方式?
>通常,“退出状态代码”值是特定于JVM还是特定于操作系统?我看到一些问题,人们已将退出代码值报告为“10”,“34545”等.

谢谢你的阅读,

解决方法

实际上,这是两个问题:-)

>几乎可以肯定的是,IE本身捕获了它被外部关闭并决定返回该错误代码的事实(见下文2).所以不,JVM不会将p1.destroy()视为一种特殊情况,但受影响的流程可能会.
>退出值是特定于进程的,而不是特定于JVM的(甚至不是特定于操作系统的).换句话说,进程本身返回一个值以用作退出值.当你想到有办法破坏不涉及JVM的进程时,这是有道理的.

我应该提一下,有些情况下进程不会影响退出代码.在某些类UNIX操作系统下,如果由于某些严重故障(例如分段违规或暴力外部关闭)而导致进程退出,则操作系统可以将退出代码设置为指示此值的值.从记忆中,它是128加上信号编号.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读