当调用返回时,内核#系统创建的进程似乎尚未完全退出



我正在编写一个jruby应用程序,从Java jar中运行,负责更新用户机器上作为windows服务运行的另一个应用程序。我遇到问题的程序的相关部分如下:

  • windows服务下载updater.jar程序,启动updater.jar,然后windows服务退出
  • updater.jar运行并调用windows.bat文件来卸载windows服务。.bat文件位于windows_service_root\bin\目录中。.bat文件是通过ruby的Kernel#system()方法调用的,例如:system('windows_service_root\bin\uninstall_service.bat')
  • system()返回后,我将用updater.jar带来的所有文件的更新副本覆盖windows_service_root\bin\中的每个文件,包括"uninstall_service.bat">

我的问题是,我间歇性地收到一个错误,即uninstall_service.bat仍在使用中,无法覆盖,尽管我预计当Kernel#system()退出时,启动的子进程应该已经完全退出。

jruby 1.6.7.2/Windows Server 2008/java 1.7.0_40-b43

提前感谢您在这个问题上提供的任何帮助。

确保您使用的是最新的JRubies,或者尝试执行Spoon.spawn(使用勺子宝石)。。。支持Windows:https://github.com/headius/spoon/blob/master/lib/spoon.rb#L16

可能是一个错误。您应该将此作为问题提交到http://bugs.jruby.org.

最新更新