我的脚本打开TCP连接并从服务器读取数据。如果服务器没有响应,我尝试使用Ctrl + C中断脚本,但它不起作用。终止脚本的唯一方法是在任务管理器中终止进程。任何想法如何打断这样的脚本?
require 'socket'
host = '...'
port = ...
s = TCPSocket.open(host, port)
while line = s.gets
puts line.chop
end
s.close
答案 0 :(得分:1)
陷阱(“SIGINT”){清理;出口}
答案 1 :(得分:1)
我注意到,我在等待来自服务器的响应时c + Ctrl + C,并且一段时间后来响应,应用程序终止。但是当我在socket(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
现在我可以通过输入任何字符来终止脚本。但是对于替代解决方案仍然很高兴。
答案 2 :(得分:0)
在Windows上,键入Ctrl + Pause