drubyを使用してrubyに達するサブプロセスは、親プロセスにサブプロセスPIDデータを渡します.

1429 ワード

ここでは、メインプロセスが独立して実行されるサブプロセスを作成する必要がありますが、メインプロセスはサブプロセスの実行状況を監視する必要があります.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