Comment réparer la suspension POPEN3 dans Ruby?
Question
J'obtiens un comportement inattendu en utilisant POPEN3, que je veux utiliser pour exécuter une commande comme l'outil Ala cmd < file1 > file2
. L'exemple ci-dessous est suspendu, de sorte que stdout done
n'est jamais atteint. Utiliser d'autres outils que cat
peut provoquer la suspension, pour que stdin done
n'est jamais atteint. Je soupçonne que je souffre de mémoire tampon, mais comment puis-je résoudre ce problème?
#!/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"
Pas de solution correcte
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow