1

看来return status code从您的main. 但我想知道这int是怎么回事?我在eclipse上试过了,但在控制台上看不到。我怎么得到status code

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

5 回答 5

5

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

class Test {

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

}

然后我使用 Next 编译它javac Test.java 我编写了一个简单的 bash 脚本,该脚本将运行java Test然后打印出这样的退出代码

#!/bin/bash

java Test
echo $?

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

于 2014-01-14T03:21:17.823 回答
4

该值称为退出状态

计算机编程中进程的退出状态或返回码是当子进程(或被调用者)完成执行特定过程或委托任务时从子进程(或被调用者)传递给父进程(或调用者)的一小部分数字。

这是一个小的 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(?)它的父进程,然后打印出来。

于 2014-01-14T03:24:28.373 回答
3

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

于 2014-01-14T03:17:38.743 回答
1
C:\JavaTools>javac SystemExit.java

C:\JavaTools>java SystemExit

C:\JavaTools>echo %ERRORLEVEL%
123
于 2014-01-14T03:32:50.253 回答
0

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

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

于 2014-01-14T03:51:06.243 回答