Frage

Ich möchte in der Lage sein, ein Ruby-Programm zu schreiben, das neu gestartet werden kann, ohne dass die Socket-Verbindungen unterbrochen werden.

War es hilfreich?

Lösung

Dieses Programm ruft die Homepage von Google ab und wenn Sie ihr dann SIG_INT über Strg-C übergeben, startet es das Programm neu und liest die Ausgabe der Homepage aus dem offenen Socket mit 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

Andere Tipps

Sie sprechen von Netzwerk-Sockets, nicht von UNIX-Sockets, nehme ich an?

Ich bin mir nicht sicher, ob dies Ihren Anforderungen entspricht, aber ich würde es so machen, dass ich den Netzwerk- und den Logikteil trenne und nur den Logikteil neu starte und dann den Logikteil wieder mit dem Netzwerkteil verbinde.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top