2012-04-18 3 views
3

背景:
RubyスクリプトをOCRA 1.2を使用して実行可能ファイルにパッケージ化されています。次のようにOCRAでパッケージ化されたRuby実行可能ファイルを実行しているときにConsoleウィンドウの終了を処理する方法は?

スクリプトが構成されています

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

問題:私はWindows上で実行可能ファイルを実行すると
、それはコンソールウィンドウを開き、そしていつものように実行します。 Ctrl-Cを押すと、クリーンアップコードが実行されます。しかし、コンソールウィンドウを閉じると、クリーンアップコードが実行されません。

も、このシナリオでは、クリーンアップコードを実行することを保証するために、とにかくありますか?


サイドノート:Rubyを初めて使用したJavaの背景です。の

答えて

0

ソート。あなたはバックグラウンド処理が必要ですが、残念ながらWindows IO.popenの下ではあまり信頼できません。(2)Windowsの "start/B"コマンドでも(共有)コンソールでコードを実行します。

あなたが本当にこれを必要とし、あなたがあなたのプログラムの出力を確認する必要があるのであれば...、あなたはWindowsサービスをインストールすることをお勧めします。あなたは重要なコードを直接サービスに入れたり、実行ファイルの名前を渡すことができます& voila!それはバックグラウンドで実行されます。

したがって、ユーザーはアプリを殺すにいくつかの本当の努力をしなければならない、とあなたがコンソールに行くためのプログラムの出力が必要な場合は、サービスが必要なテキストを戻す可能性があります。

あなたが出力を確認する必要がない場合は、rubyw.exeでアプリケーションを実行すると、コンソールを抑制することができます。おそらく、必要に応じて、start rubyw my_app.rbのようなものを使用して、アプリが2番目の.rbファイルを開始するようにすることができます。

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

+0

これは私がまだ持っていた答えに最も近いものだと思います。だから簡単に、簡単ではありません。私はちょうど「Ctrl-Cを押して終了する」と表示していました。ありがとう。 – Lionel

関連する問題