0

ソケット接続を落とさずに再起動できるRubyプログラムを書けるようになりたいです。

4

2 に答える 2

1

このプログラムは Google のホームページを取得し、それを SIG_INT 経由で渡すとCtrlCプログラムを再起動し、Google で開いているソケットからホームページの出力を読み取ります。

#!/usr/bin/ruby
#simple_connector.rb
require 'socket'

puts "Started."

if ARGV[0] == "restart"
  sock = IO.open(ARGV[1].to_i)
  puts sock.read
  exit
else
  sock = TCPSocket.new('google.com', 80)
  sock.write("GET /\n")
end

Signal.trap("INT") do
  puts "Restarting..."
  exec("ruby simple_connector.rb restart #{sock.fileno}")
end

while true
  sleep 1
end
于 2008-09-01T23:21:48.203 に答える
0

UNIXソケットではなく、ネットワークソケットについて話しているのですか?

これがあなたのニーズに合っているかどうかはわかりませんが、ネットワーク部分とロジック部分を分離し、ロジック部分のみを再起動してから、ロジック部分をネットワーク部分に再接続する方法です。

于 2008-09-01T23:21:06.880 に答える