如何在Ruby上的Unix上创建持久网络套接字?

我希望能够编写一个可以重新启动而不会丢失它的套接字连接的ruby程序。

该程序获取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 

你在谈论网络套接字,而不是我假设的UNIX套接字?

我不确定这是否适合您的需求,但我这样做的方法是分离网络和逻辑部分,只重新启动逻辑部分,然后将逻辑部分重新连接到网络部分。