[英]Determining whether a Java program has been launched from an interactive shell
[英]Java: how to check if a program has been correctly launched?
我正在使用BaseX服务器开发一个小的Java jar应用程序,用于在file.xml中存储数据。 首先,在主程序启动之前,我需要正确启动和激活Basex Server。 所以这是我的工作:
Runtime runtime = Runtime.getRuntime();
if (isWindows(os)) {
Process server = runtime.exec("cmd /C basexserver.bat");
System.out.println(server.waitFor());
}
else {
if (isLinux(os)) {
runtime.exec("basexserver");
}
}
为了检查BaseXServer是否正确运行,我尝试检查waitFor方法返回的值,如果该值等于0,则该命令已成功执行,而如果返回的值大于0,则发生了错误。 问题在于该方法始终返回1,但命令“ basexserver.bat”正确。 为什么?
如果启动后进程进入后台,则可以检查exitValue()
为零。 其次,可以使用方法getErrorStream()
和getInputStream()
将错误附加到标准输出。 并监视他们的错误消息。 也可以看看流火鸡模式。 如果不消耗其输出,某些进程可能会卡住。
https://docs.oracle.com/javase/7/docs/api/java/lang/Process.html http://www.javaworld.com/article/2071275/core-java/when-runtime-exec-- -won-t.html
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.