でスクリプトを実行するときに、私は次のコードpopen3がpopen3
def execute_bash(cmd)
puts "Executing: [#{cmd}]"
exit_code = Open3.popen3(cmd) do |stdin, stdout, stderr, wait_thr|
stdin.close
stdout.each { |line| puts line }
stdout.close
stderr.each { |line| puts line }
stderr.close
wait_thr.value.exitstatus
end
return exit_code
end
を持ってハングアップ、私はこの機能を実行するコマンドは大量の出力を生成すること、アップ浮浪者です。私はレシピをたくさん持っているので、それをリアルタイムでモニターする必要があります。
また、以前のスクリプトが正常に実行され、クラッシュしないことを保証する別のスクリプトがあります。だから私は以前と同じようにbashコマンドを実行する別のスクリプトを持っています。だから私は(2番目のスクリプトで)実行されているようだ:
execute_bash "./vagrant_up.rb"
このような結果は死んでロックか何かに私をリード:いくつかの点出力停止中。私は多くの時間を待つことができますが、それは続かないでしょう。
私はコンソールで迷惑メールを実行すると、すべて正常です。
他のpopen3でpopen3を使ってrubyスクリプトを実行するには問題がありますか? popen3のデッドロックを処理する適切な方法はありますか?(デッドロックの場合、わかりません)
残念ながら、stderrのリダイレクトは役に立ちませんでした。 system()関数で同じデッドロックが発生する可能性はありますか? – GALIAF95