我希望能够编写一个可以在不删除套接字连接的情况下重启的ruby程序。
答案 0 :(得分:1)
此程序获取Google的主页,然后当您通过ctrl-c传递SIG_INT时,它会重新启动程序并从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
答案 1 :(得分:0)
你在谈论网络套接字,而不是我假设的UNIX套接字?
我不确定这是否符合您的需求,但我这样做的方法是分离网络和逻辑部分,只重新启动逻辑部分,然后将逻辑部分重新连接到网络部分。