繁体   English   中英

system.exit()在Java中要去哪里?

[英]where does the system.exit() goes to in Java?

看来是从main取得return status code一种方法。 但我想知道这个int会去哪里? 我在eclipse上尝试过,但是在控制台上看不到它。 我如何获得status code

public static void main(String[] args){
         int status = 123;
          System.exit(status);
     }

退出代码通常返回到运行您的应用程序的脚本或程序,例如,我编写了以下简单的Java程序

class Test {

    public static void main(String[] args) {
        System.exit(123);
    }

}

然后,我使用javac Test.java对其进行javac Test.java接下来,我编写了一个简单的bash脚本,该脚本将运行java Test ,然后打印出这样的退出代码

#!/bin/bash

java Test
echo $?

当我运行bash脚本时,数字123将作为$?打印到屏幕上$? 是最后运行的命令的退出代码。

该值称为退出状态

计算机编程中某个进程的退出状态或返回码是一小部分,它在完成特定过程或委托任务后从子进程(或被调用方)传递给父进程(或调用方)。

这是一个小的Java测试来演示它

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.Arrays;

public class Foo {
    public static void main(String[] args) throws Exception {
        if (args.length != 0)
            System.exit(Integer.parseInt(args[0]));
        ProcessBuilder builder = new ProcessBuilder(Arrays.asList("java", "Foo", "42"));
        Process process = builder.start();
        System.out.println(process .waitFor());     
    }
}

编译并运行该程序,不带任何参数。 它将打印

42

这个Java程序启动一个子进程。 当该进程结束时,它将在System.exit(?)传递给它的值返回给其父进程,然后将其打印出来。

退出代码(状态)会在JVM终止时返回到操作系统,因此,如果要通过终端/命令行运行它,则会看到程序是否异常终止。

C:\JavaTools>javac SystemExit.java

C:\JavaTools>java SystemExit

C:\JavaTools>echo %ERRORLEVEL%
123

退出代码将返回到操作系统。 返回0表示程序退出时没有错误,反之亦然。

返回不同的错误代码意味着不同的原因。 这可以帮助OS(或父进程)找出程序出了什么问题。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM