問題は、Windows上のすべての実行可能ファイルは、GUI実行ファイルまたはコンソール実行ファイルのいずれかであると定義されています(それよりも詳細ですが、ここでは問題ありません)。あなたのRubyスクリプトを実行している実行可能ファイルはGUI実行可能ファイルです(実際にはGUIを構築するためにTkを使用しますが、スクリーンショットでは非常に単純なものです)、ping実行ファイルはコンソール実行ファイルです。 GUI実行可能ファイルがコンソール実行可能ファイルを開始すると、実行可能ファイルを実行するためにコンソールが自動的に作成されます。 これを変更することはできません。
もちろん、画像はそれより複雑です。これは、コンソールアプリケーションが実際にGUI(正しいAPI呼び出しを行うだけでよい)で動作することができるためであり、コンソールウィンドウを途切れることなく(適切にpingを開始する - 設定されたショートカットファイル)しかし、そのようなことはむしろ面倒です。最も簡単な方法は、Ruby自体をコンソールアプリケーションにすることで、コンソールウィンドウを常時表示させることです( .rb
ではなく .rb
の接尾辞を使用してスクリプト名を付けます)。はい、それは実際に問題を取り除くわけではありませんが、どんな厄介な点滅も止めます。
アプリケーションの目的としてpingを使用していた場合(つまり、サービスが稼働しているかどうかを調べるために)、Rubyにチェックコードを直接書くのではなく、サービスに接続することが可能かどうかpingはターゲットOSカーネルが稼動しているかどうかを測定するだけで、実行可能なサービスは測定しないためです。これは素晴らしい区別ですが、マシンが実行ファイルが実行されていない状態になりましたが、マシンは依然としてpingに応答していました。これは非常に奇妙で、精神的抽象を完全に破ることはできますが、起こる可能性があります。しかし、pingを例として使用しているだけなので、(やや問題のある)コンソール処理に集中することができます。それでも、サブプロセスを実行せずに実行できるのであれば、その方法を選択してください(Windows上であれば、どんな種類のUnix上であってもこの問題はまったくありません)。