在不阻塞actor的情况下生成子进程的最佳方法是什么?
我的目标是运行多个命令,完成后,获取输出和退出代码。我试过这个,但显然, popen 调用被阻塞:
#!/usr/bin/env ruby
require 'celluloid/current'
require 'celluloid/io'
class MyProcessLauncher
include Celluloid::IO
def run
every(1) { puts "tick" }
every(5) {
puts "Starting subprocess"
::IO.popen("sleep 10 && echo 'subprocess done'", :err=>[:child, :out]) { |io|
puts io.read
}
puts $?.exitstatus
}
end
end
MyProcessLauncher.new.run
sleep
输出是:
tick
tick
tick
tick
Starting subprocess
subprocess done
0
tick
Starting subprocess
但我希望每个“启动子进程”之间有五个“勾号”......
谢谢 !