3

背景:
使用 OCRA 1.2 将 Ruby 脚本打包成可执行文件。

脚本结构如下:

begin
  <some code that runs for a while>
ensure
  <cleanup code>
end

问题:
当我在 Windows 上运行可执行文件时,它会打开一个控制台窗口,并照常运行。如果我按 Ctrl-C,清理代码将运行。但是如果我要关闭控制台窗口,清理代码就不会运行。

无论如何,即使在这种情况下,是否也可以确保清理代码运行?


旁注:我来自 Java 背景,第一次使用 Ruby。

4

1 回答 1

0

有点。您需要后台处理,但不幸的是(1)在 Windows IO.popen 下不是很可靠。(2)即使是 Windows“start /B”命令也只是在(共享)控制台中运行代码。

所以...如果你真的需要这个,并且你需要查看你的程序的输出,你会想要安装一个 Windows 服务。您可以将关键代码直接放入服务中,也可以将可执行文件的名称传递给它,瞧!它会在后台运行。

所以用户必须付出一些真正的努力来杀死应用程序,如果你需要程序的输出到控制台,你可以让服务返回必要的文本。

如果您不需要查看输出,您可以使用 ruby​​w.exe 运行应用程序并抑制控​​制台。start rubyw my_app.rb根据您的要求,您可能会让您的应用程序使用类似的东西启动第二个 .rb 文件。

可能不是您想要的答案,但应该可以。如果你真的,真的需要它。

于 2012-04-28T01:19:16.357 回答