1

の次の 2 つの使用法に違いはありpopen3ますか?

html = ''
stdin, stdout, stderr = Open3.popen3("curl #{url}")
html << stdout.read

html = ''
Open3.popen3("curl #{url}") do |stdin, stdout, stderr, wait_thr|
  result << stdout.read
end

2 番目の構文によって一部のスレッドがブロックされるのではないかと考えています。私は非同期コードにかなり慣れていないので、どんな洞察も大歓迎です!

4

2 に答える 2

1

stdin最初の形式では、 、stdoutおよびを明示的に閉じる必要がありstderrます。

于 2012-07-15T19:15:17.960 に答える