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

我这里有个需求,希望主进程能创建一些独立运行的子进程,但是主进程需要监控子进程的执行情况,在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服务

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值