![](/img/trans.png)
[英]How to callback process status from a PHP script,Java program to the calling bash shell
[英]How to get the java program completion status from unix shell script?
例如,我們正在執行以下語句,我們希望根據java執行的狀態進一步處理。
java -classpath $CLASSPATH com.heb.endeca.batch.BatchManager "param1" "param2" "param3"
如果你的Java代碼退出System.exit(status)
,你可以像這樣在Bash中獲取狀態:
Java的:
public class E {
public static void main(String[] args) {
System.exit(42);
}
}
擊:
$ java E
$ echo $?
42
$?
是最后完成的進程的退出狀態。
java程序應該以Sytem.exit(status)結束。 該數字作為操作系統中的任何其他命令返回。
正如其他人所說,你需要使用System.exit()
來獲得所需的輸出。 這背后的原因是System.exit()
直接終止程序並退出返回定義的值。
如果你想知道為什么我們不能從main
方法返回任何東西,答案是 - 在java main
方法永遠不會返回任何東西,如果你分析黃金需要的語句
public static void main()
你會看到,在java main中有一個返回類型為void
。
因此,如果您正在從調用程序(在本例中為Shell)中檢查java程序的返回狀態,那么您實際上是在嘗試讀取jvm
的退出狀態而不是您的java程序的退出狀態,這在正常情況下始終為零(0)如果由於任何異常而導致程序崩潰,那就更難了。 只有當jvm由於OutOfMemory
等意外原因或類似的關鍵性崩潰而崩潰時,才會獲得非零退出狀態。
希望這有助於您理解捕獲java程序的退出狀態。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.