看來this是從您main
一個return status code
的一種方式。 但我想知道這個int
去哪了?我在eclipse上試過,但是我沒有在控制檯上看到它。 我怎麼了status code
system.exit()在Java中去哪裏?
public static void main(String[] args){
int status = 123;
System.exit(status);
}
看來this是從您main
一個return status code
的一種方式。 但我想知道這個int
去哪了?我在eclipse上試過,但是我沒有在控制檯上看到它。 我怎麼了status code
system.exit()在Java中去哪裏?
public static void main(String[] args){
int status = 123;
System.exit(status);
}
該值是被稱爲exit status
退出狀態或返回在計算機編程的過程的代碼是 從一個子進程(或被叫)傳遞到父 處理的少數(或調用者)完成執行特定的 過程或委託任務。
這裏有一個小的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(?)
中傳遞給它的值返回給它的父進程,然後打印出來。
'args [0]'如何得到'42'? –
@ user1988876因爲我用'ProcessBuilder'構建的'java'進程被賦予參數'42',它變成了JVM傳遞給'main'方法的'String []'中索引爲0的參數。 –
是否需要三個進程的'list(java,foo,42)'的每個參數? –
退出代碼(狀態)返回到操作系統上的JVM終止,所以如果你是通過終端/命令行運行它,你會看到,如果程序終止異常。
退出代碼通常被返回到正在運行的應用程序,例如腳本或程序,我寫使用javac Test.java
接下來,我寫了一個簡單以下簡單的Java程序
class Test {
public static void main(String[] args) {
System.exit(123);
}
}
我然後編譯它bash腳本,將運行java Test
,然後打印出退出這樣的代碼
#!/bin/bash
java Test
echo $?
當我運行bash腳本的數字123
被打印在屏幕上,如$?
是運行的最後一個命令的退出代碼。
C:\JavaTools>javac SystemExit.java
C:\JavaTools>java SystemExit
C:\JavaTools>echo %ERRORLEVEL%
123
退出代碼將返回到操作系統。返回0意味着程序退出時沒有錯誤,反之亦然。
返回不同的錯誤代碼裝置不同的原因。這可以幫助操作系統(或父進程)找出程序出了什麼問題。
如果你在Linux上,試試'echo $?' –