【发布时间】:2012-05-11 18:57:22
【问题描述】:
我有一个 java 程序,它应该运行一个 bat 文件,然后以成功代码 0 退出。
代码基本上是这样的
Runtime.exec(....);
System.exit(0);
在 99.8% 的情况下,这都能完美运行。但非常偶尔地,bat 文件不会运行。
我的理论是,在某些系统上,Runtime.exec 无法在 System.exit 运行之前完成它的生成。这可能/可能吗?
我查看了 Runtime.exec 的源代码,但它会放入本机代码中来做一些有趣的事情。
编辑
根据到目前为止的答案,我应该声明 .bat 文件使用 javaw 执行另一个 java 进程。我可以确认第一个 java 进程结束不会杀死 bat 文件中的第二个运行。
是否有可能当问题发生时,bat 文件在 System.exit 发生之前没有产生第二个 java 进程?或许毕竟不是 Runtime.exec 的问题?
EDIT2
我不能等待第二个进程结束,它可以无限期地运行,我的第一个进程必须退出。
【问题讨论】:
-
这里不需要javaw,Process类代替Runtime类就足够了。
标签: java runtime.exec system.exit