Module: EventMachine
- Defined in:
- lib/panoptimon/eventmonkeypatch/popen3.rb
Overview
feed stderr into connection’s receive_stderr()
Defined Under Namespace
Classes: StderrHandler
Class Method Summary collapse
Class Method Details
.popen3b(cmd, handler = nil, *args) ⇒ Object
15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 |
# File 'lib/panoptimon/eventmonkeypatch/popen3.rb', line 15 def self.popen3b(cmd, handler=nil, *args) klass = klass_from_handler(Connection, handler, *args) raise "no command?" unless cmd.first cmd.unshift(cmd.first) # -> execvp original_stderr = $stderr.dup begin rd, wr = IO.pipe $stderr.reopen wr s = invoke_popen(cmd) $stderr.reopen original_stderr connection = klass.new(s, *args) EM.attach(rd, StderrHandler, connection) @conns[s] = connection yield(connection) if block_given? connection rescue $stderr.reopen(original_stderr) raise $! end end |