drubyを使用してrubyに達するサブプロセスは、親プロセスにサブプロセスPIDデータを渡します.
1429 ワード
ここでは、メインプロセスが独立して実行されるサブプロセスを作成する必要がありますが、メインプロセスはサブプロセスの実行状況を監視する必要があります.windowsでは、system、exec、・・方式で作成された独立したサブプロセスは、メインプロセスがPIDを取得する方法がないようです.その実行状況を監視するために、私が採用しているdruby方式は、に表示されます.(PIDによって、メインプロセスはタイマがタイムアウトしたとき、PIDによってサブプロセスを殺すことができます)
親プロセスファイルdruby_server.rb
ディレクトリ・サブプロセスで使用されるファイルdruby_client.rb
親プロセスファイル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