Эта программа получает домашнюю страницу 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