看来这是return status code
从您的main
. 但我想知道这int
是怎么回事?我在eclipse上试过了,但在控制台上看不到。我怎么得到status code
public static void main(String[] args){
int status = 123;
System.exit(status);
}
看来这是return status code
从您的main
. 但我想知道这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);
}
}
然后我使用 Next 编译它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 表示程序无错误退出,反之亦然。
返回不同的错误代码意味着不同的原因。这可以帮助操作系统(或父进程)找出程序出了什么问题。