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
scroll top