# File lib/eventmachine.rb, line 1166
1166:         def self::popen cmd, handler=nil, *args
1167:                 klass = if (handler and handler.is_a?(Class))
1168:                   raise ArgumentError, 'must provide module or subclass of EventMachine::Connection' unless Connection > handler
1169:                         handler
1170:                 else
1171:                         Class.new( Connection ) {handler and include handler}
1172:                 end
1173: 
1174:                 w = Shellwords::shellwords( cmd )
1175:                 w.unshift( w.first ) if w.first
1176:                 s = invoke_popen( w )
1177:                 c = klass.new s, *args
1178:                 @conns[s] = c
1179:                 yield(c) if block_given?
1180:                 c
1181:         end