4

我的脚本打开 TCP 连接并从服务器读取数据。如果服务器没有响应,我尝试使用 Ctrl+C 中断脚本,但它不起作用。终止脚本的唯一方法是在任务管理器中终止进程。任何想法如何中断这样的脚本?

require 'socket'

host = '...'
port = ...

s = TCPSocket.open(host, port)

while line = s.gets
  puts line.chop
end

s.close 
4

3 回答 3

1

陷阱(“SIGINT”){清理;出口}

于 2010-12-03T21:22:33.910 回答
1

我注意到,在等待来自服务器的响应时,我点击了 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

现在我可以通过输入任何字符来终止脚本。但是仍然很高兴了解替代解决方案。

于 2010-12-03T21:33:14.867 回答
0

在 Windows 上,键入 Ctrl+Pause

于 2010-12-04T09:52:39.583 回答