使用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服务
相关文章推荐
- Linux如何安装使用pidstat命令以对进程数据进行监控
- [Linux进程]在父进程和子进程中分别使用execl函数
- 用进程相关API函数编程一个程序,使之产生一个进程扇,父进程产生一系列子进程,每个子进程打印自己的PID然后退出。要求父进程最后打印PID
- Android:使用AIDL实现进程间传递复杂数据类型
- C#中使用SendMessage在进程间传递数据的实例
- C#中使用SendMessage在进程间传递数据的实例
- 使用windowsAPI穿件匿名管道pipe,父子进程间数据传递
- 0907使用write函数向共享内存中写入数据,实现不同进程间的数据信息传递
- 父进程产生一系列子进程,每个子进程打印自己的PID然后退出。要求父进程最后打印PID。
- 编写一个程序,使用fork函数来创建一个子进程,并且说明父进程和子进程的随机返回问题
- C#中使用SendMessage在进程间传递数据的实例
- 父进程 等待子进程初始化后才使用子进程_waitforinputidle
- C#中使用SendMessage在进程间传递数据的实例
- Android中级教程(三)之不同Activity之间的数据传递---Bundle对象的使用!
- 使用钩子函数[6] - 数据传递
- 使用PostBackUrl与Server.Transfer传递数据
- 使用Excel COM组件导出数据后释放 Excel进程不能正常结束
- 使用Cross-Page Postback(跨页面提交)在页面间传递数据
- 使用PostBackUrl与Server.Transfer传递数据
- WCF分布式开发步步为赢(8):使用数据集(DataSet)、数据表(DataTable)、集合(Collection)传递数据