0

我希望能够编写一个可以重新启动而不会断开其套接字连接的 ruby​​ 程序。

4

2 回答 2

1

该程序获取 Google 的主页,然后当您通过 SIG_INT 传递它时Ctrl-C它重新启动程序并使用 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 回答