如何将用户中断到无限循环中?
-
12-10-2019 - |
题
我有一个Ruby脚本,下面有一个无限打印的数字从1开始。我如何通过在'ctrl+c'或键“ q”等终端中的中断停止其无限执行?
a = 0
while( a )
puts a
a += 1
# the code should quit if an interrupt of a character is given
end
通过每次迭代,不应询问用户输入。
解决方案
我认为您必须在单独的线程中检查出口条件:
# check for exit condition
Thread.new do
loop do
exit if gets.chomp == 'q'
end
end
a = 0
loop do
a += 1
puts a
sleep 1
end
顺便说一句,您必须输入 q<Enter>
退出,因为这就是标准输入的工作方式。
其他提示
使用kernel.trap安装CTRL-C的信号处理程序:
#!/usr/bin/ruby
exit_requested = false
Kernel.trap( "INT" ) { exit_requested = true }
while !exit_requested
print "Still running...\n"
sleep 1
end
print "Exit was requested by user\n"
不隶属于 StackOverflow