338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
|
# File 'lib/vendor/open4/lib/open4.rb', line 338
def background arg, *argv
require 'thread'
q = Queue.new
opts = { 'pid' => q, :pid => q }
case argv.last
when Hash
argv.last.update opts
else
argv.push opts
end
thread = Thread.new(arg, argv){|arg, argv| spawn arg, *argv}
sc = class << thread; self; end
sc.module_eval {
define_method(:pid){ @pid ||= q.pop }
define_method(:spawn_status){ @spawn_status ||= value }
define_method(:exitstatus){ @exitstatus ||= spawn_status.exitstatus }
}
thread
end
|