Question

J'aimerais être capable d'écrire un rubis programme qui peut redémarrer sans abandonner c'est les connexions socket.

Était-ce utile?

La solution

Ce programme obtient Google en page d'accueil et puis quand vous le passez SIG_INT via ctrl-c, elle redémarre le programme et lit la sortie de la page d'accueil de la socket ouvert avec 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

Autres conseils

Vous parlez des sockets réseau, pas les sockets UNIX, je suppose?

Je ne suis pas sûr que cela convient à vos besoins, mais la façon dont je voudrais faire c'est en séparant le travail en réseau et la partie logique, et ne redémarre la partie logique, puis rebranchez-la partie logique de la mise en réseau de la partie.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top