Project

General

Profile

Bug #12566

IO.copy_stream : tty/command-line events not being passed around

Added by chucke (Tiago Cardoso) almost 3 years ago. Updated almost 3 years ago.

Status:
Rejected
Priority:
Normal
Assignee:
-
Target version:
-
[ruby-core:76294]

Description

Coming from here: http://stackoverflow.com/questions/38248911/ruby-when-copying-streams-how-to-make-it-pass-input-characters

I don't know if the stdin is not flushing the special characters down the stack, or the leaf process stdout is not flushing upwards, but something is fishy in this:

#!/usr/bin/env
require 'open3'                              
Open3.popen3("expect -") do |i, o, e, t|     
  Thread.start { IO.copy_stream(o, $stdout) }
  Thread.start { IO.copy_stream(e, $stderr) }
  i << "spawn bash\ninteract\nwait\nexit\n"  
  Thread.start { IO.copy_stream($stdin, i) } 
  t.value                                    
end  
#=> after executing, try "ls" and press tab

History

Updated by chucke (Tiago Cardoso) almost 3 years ago

$stdin.raw!

You can close, found the solution.

Updated by nobu (Nobuyoshi Nakada) almost 3 years ago

  • Status changed from Open to Closed
  • Description updated (diff)

Updated by usa (Usaku NAKAMURA) almost 3 years ago

  • Status changed from Closed to Rejected

Also available in: Atom PDF