あなたは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
オブジェクトへのアクセスを得ることです。プロセスの標準入力、出力、およびエラー・ストリームは、その順にリダイレクトされます。
これは、プログラムの出力を消費する場合、または標準入力ストリームを使用して通信する場合に最適です。通常、端末に印刷されるテキストは、代わりにスクリプトで使用できるようになります。
また、プログラムの実行が完了するのを待つスレッドもあります。これは便利で直感的です。