當用戶使用Control + c終止整個腳本時,是否有保留的命令名?例如,如果我想在腳本終止時執行puts "Script terminated by user."
,我該怎麼做?按Ctrl + C終止時運行的命令
1
A
回答
3
trap("INT") do
puts "Script terminated by user."
exit
end
sleep 10
運行這個,然後按ctrl-c。
2
Kernel.trap
方法可用於指定信號處理程序。
0
隨着其他兩個答案的幫助下,我查閱了一些相關的方法在Kernel
,並發現,還存在一些其他的方法:
trap(0){puts "Script terminated by user."}
或
at_exit{puts "Script terminated by user."}
0
我發現這是退出腳本的更優雅的方式。如果您想幹淨地退出並確保腳本將事物保持在一致狀態,這非常有用。
http://futuresimple.github.com/posts/2012-02-24-graceful-exiting-from-console-programs-in-ruby/
require "singleton"
class GracefulQuit
include Singleton
attr_accessor :breaker
def initialize
self.breaker = false
end
def self.enable
trap('INT') {
yield if block_given?
self.instance.breaker = true
}
end
def self.check(message = "Quitting")
if self.instance.breaker
yield if block_given?
puts message
exit
end
end
end
然後你就可以在你的腳本編寫:腳本結束時
require 'graceful_quit'
GracefulQuit.enable{puts "Exit signal received..."}
puts "Control-C to exit"
while(true)
...
# something that you want to make sure finishes before you exit
...
GracefulQuit.check("Done.")
sleep(10)
end
相關問題
- 1. 終止正在運行的命令時,shell腳本被殺害
- 2. 無法用Ctrl + c終止一個shell命令
- 3. 在Node.js中發送終止(Ctrl + C)命令SSH2
- 4. 什麼終端命令停止webrick服務器除了Ctrl-C?
- 5. 終止Shell命令
- 6. 在X時間運行Bash命令並終止X時間
- 7. CTRL-C終止於python
- 8. Python腳本無法通過按Ctrl + C或Ctrl終止+ BREAK
- 9. 如何從C執行命令,並終止其
- 10. 終端打開時運行命令(Linux)
- 11. 阻斷Ctrl-C鍵/按Ctrl-Z中的輸入命令
- 12. 如何停止在ctrl + c以外的linux中運行R命令?
- 13. 在cygwin終端中運行的碼頭服務器不以CTRL +終止c
- 14. 中止並重新運行命令
- 15. init.d腳本不會運行執行命令,但命令在手工運行時終止
- 16. 保存終端命令到打開時在終端運行命令的文件
- 17. sed命令:未終止的命令
- 18. C#命令行,運行兩個命令
- 19. C#運行命令不執行命令
- 20. 當它運行一個子進程時,在Ctrl + C上終止Python程序
- 21. 未終止的命令
- 22. 如何終止PHP exec()的運行命令啓動?
- 23. 使用paramiko執行命令時無法終止進程
- 24. (MAC)終端確定運行命令
- 25. 命令按鈕運行時異常
- 26. 單擊X按鈕時運行命令
- 27. 運行命令的終端窗口
- 28. 如何在JFrame出口上運行終止命令?
- 29. 當「ctrl c」用於終止程序時程序不停止
- 30. 當bash腳本停止時運行命令
at_exit將打印信息,CTRL-C或沒有。 – steenslag