您的位置:首页 > 编程语言 > Ruby

使用druby,达到ruby的子进程向父进程传递子进程PID数据

2016-01-07 00:16 471 查看

我这里有个需求,希望主进程能创建一些独立运行的子进程,但是主进程需要监控子进程的执行情况,在windows上,system,exec,··方式创建的独立子进程,主进程似乎没有什么办法可以获取其PID,以便监控其执行情况,我采用的druby方式,来达到子进程向父进程传递参数的目的。(通过PID,主进程可以在定时器超时时,通过PID,杀死子进程)

 

父进程文件druby_server.rb

require 'drb/drb'

ip = 'localhost'
port = '8787'

class TimeServer
attr_accessor :pid
def get_current_time
return Time.now
end

def push_process_pid(pid)
@pid = pid
end
def druby_reboot
DRb.stop_service
end
end

obj_server=TimeServer.new
DRb.start_service("druby://#{ip}:#{port}", obj_server)

rs = File.dirname(__FILE__) + "/druby_client.rb"
Thread.new do
system("ruby.exe #{rs}")
end
sleep 2  #此处可以采用轮询的方式来观察子进程是否已经将PID数据传递过来
p obj_server.pid

DRb.thread.join

 同目录下子进程使用的文件druby_client.rb

require 'drb/drb'

ip = 'localhost'
port = '8787'

DRb.start_service

client = DRbObject.new_with_uri("druby://#{ip}:#{port}")
pid = Process.pid
client.push_process_pid(pid)
# client.druby_reboot #强制终止远端druby服务

 

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐