![](/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.