Come riparare popen appeso in Ruby?
Domanda
Sto ottenendo un comportamento inaspettato usando Popen3, che voglio usare per eseguire un comando come lo strumento ALA cmd < file1 > file2
. L'esempio seguente è appeso, in modo che stdout done
non è mai raggiunto. Usando altri strumenti di cat
può causare impiccagione, in modo che stdin done
non è mai raggiunto. Sospetto, sto soffrendo di buffering, ma come posso risolvere questo problema?
#!/usr/bin/env ruby
require 'open3'
Open3.popen3("cat") do |stdin, stdout, stderr, wait_thr|
stdin.puts "foobar"
puts "stdin done"
stdout.each_line { |line| puts line }
puts "stdout done"
puts wait_thr.value
end
puts "all done"
Nessuna soluzione corretta
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow