3

背景:
Ruby スクリプトは、OCRA 1.2 を使用して実行可能ファイルにパッケージ化されています。

スクリプトは次のように構成されています。

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 サービスをインストールすることをお勧めします。重要なコードをサービスに直接配置するか、実行可能ファイルの名前を渡すことができます。バックグラウンドで実行されます。

そのため、ユーザーはアプリを強制終了するためにかなりの労力を費やす必要があり、プログラムの出力をコンソールに表示する必要がある場合は、サービスに必要なテキストを返させることができます。

出力を表示する必要がない場合は、rubyw.exe を使用してアプリを実行し、コンソールを非表示にすることができます。start rubyw my_app.rb要件によっては、アプリでのようなものを使用して 2 番目の .rb ファイルを開始する可能性があります。

おそらくあなたが望んでいた答えではありませんが、うまくいくはずです。あなたが本当に、本当にそれを必要とするなら。

于 2012-04-28T01:19:16.357 に答える