我有一個紅寶石腳本下面,無限打印數字從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
通過每次迭代,都不應該詢問用戶輸入。
我有一個紅寶石腳本下面,無限打印數字從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>
退出,因爲這是如何輸入標準的工作。
感謝姆拉登.. !!它正是我正在尋找的。 – boddhisattva 2010-12-24 03:05:49
使用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"
嗨,彼得!謝謝你的回答,但這不是我正在尋找的。 – boddhisattva 2010-12-24 03:04:47
事實上,它不會從1打印起。它從0開始打印。 – sawa 2012-10-22 02:14:25