我的脚本打开 TCP 连接并从服务器读取数据。如果服务器没有响应,我尝试使用 Ctrl+C 中断脚本,但它不起作用。终止脚本的唯一方法是在任务管理器中终止进程。任何想法如何中断这样的脚本?
require 'socket'
host = '...'
port = ...
s = TCPSocket.open(host, port)
while line = s.gets
puts line.chop
end
s.close
陷阱(“SIGINT”){清理;出口}
我注意到,在等待来自服务器的响应时,我点击了 Ctrl+C,并且稍后的响应来了,应用程序终止了。但是当我等待套接字(s.gets)时,Ctrl+C 无效。
所以我通过在不同的线程中运行网络代码解决了这个问题。
require 'socket'
host = '...'
port = ...
t = Thread.new do
s = TCPSocket.open(host, port)
while line = s.gets
puts line.chop
end
s.close
end
STDIN.getc
现在我可以通过输入任何字符来终止脚本。但是仍然很高兴了解替代解决方案。
在 Windows 上,键入 Ctrl+Pause