test.sh という名前のシェル スクリプトがあります。Ruby から test.sh をトリガーするにはどうすればよいですか?
test.sh をバックグラウンド プロセスとして実行したいのですが、これは Ruby では非同期呼び出しであることを意味します。
STDERR と STDOUT も特定のファイルに書き込む必要があります。
何か案は?
test.sh という名前のシェル スクリプトがあります。Ruby から test.sh をトリガーするにはどうすればよいですか?
test.sh をバックグラウンド プロセスとして実行したいのですが、これは Ruby では非同期呼び出しであることを意味します。
STDERR と STDOUT も特定のファイルに書き込む必要があります。
何か案は?
@ TanzeebKhalili の回答は機能しますが、プロセスが戻るのを待たないKernel.spawn()を検討することもできます。
pid = spawn("./test.sh")
Process.detach(pid)
ドキュメントによると、spawn()
または手動でfork()
andを使用するかどうかにかかわらず、終了する前にsystem()
PID を取得する必要があることに注意してください。Process.detach()
Process.wait()
標準エラーと出力のリダイレクトに関しては、次の方法で簡単spawn()
です。
pid = spawn("./test.sh", :out => "test.out", :err => "test.err")
Process.detach(pid)
これを試して:
Process.fork { system "./test.sh" }
スレッドを使用できる Windows では機能しません。