ページを開いているときにexeが実行されるはずです。非同期プロセスを実行する必要があります。
ルビーで2つの引数を使用してexeを非同期で実行する方法はありますか?
私はrubyコマンド(system()、exec())を試しましたが、プロセスが完了するのを待っています。私はパラメータでexeを開始する必要がありますプロセスが完了するのを待つ必要はありません
私の問題をサポートするRubygemsはありますか?
ページを開いているときにexeが実行されるはずです。非同期プロセスを実行する必要があります。
ルビーで2つの引数を使用してexeを非同期で実行する方法はありますか?
私はrubyコマンド(system()、exec())を試しましたが、プロセスが完了するのを待っています。私はパラメータでexeを開始する必要がありますプロセスが完了するのを待つ必要はありません
私の問題をサポートするRubygemsはありますか?
あなたが使用することができProcess.spawn
ますProcess.wait2
:
pid = Process.spawn 'your.exe', '--option'
# Later...
pid, status = Process.wait2 pid
プログラムは、インタプリタの子プロセスとして実行されます。その上、コマンドラインから呼び出されたかのように動作します。
また、使用することができますOpen3.popen3
:
require 'open3'
*streams, thread = Open3.popen3 'your.exe', '--option'
# Later...
streams.each &:close
status = thread.value
ここでの主な違いは、3つのIO
オブジェクトにアクセスできることです。プロセスの標準の入力、出力、およびエラーストリームは、この順序でそれらにリダイレクトされます。
これは、プログラムの出力を消費したり、標準の入力ストリームを介してプログラムと通信したりする場合に最適です。通常は端末に印刷されるテキストは、代わりにスクリプトで使用できるようになります。
また、プログラムの実行が終了するのを待つスレッドも取得します。これは便利で直感的です。
exec
制御を新しいプロセスに切り替え、戻ることはありません。system
サブプロセスを作成し、それが終了するのを待ちます。
おそらくやりたいことはfork
、exec
それが戻るのを待たずに新しいプロセスを作成することです。win32ole
ライブラリを使用して、より詳細に制御することもできます。